Piszę właśnie funkcję kopiującą pliki i trafiłem na typ gniazdo - socket. Jak skopiować plik gniazda?
Poradziłem już sobie z linkami symbolicznymi (man 2 readlink, man 2 symlink), plikami regularnymi (man 3 fopen, ...), plikami urządzeń kolejek i urządzń blokowych oraz znakowych (man 2 mknod, man man 2 lstat).
Do sposobu kopiowania dochodziłem po SEE ALSO w man.
man 2 stat powiedziało:
ZOBACZ TAKŻE
chmod(2), chown(2), readlink(2), utime(2)
man 3 stat powiedziało:
SEE ALSO
fstat(), lstat(), readlink(), symlink(), the Base Definitions volume of
IEEE Std 1003.1-2001, <sys/stat.h>, <sys/types.h>
man 2 readlink powiedziało:
ZOBACZ TAKŻE
stat(2), lstat(2), symlink(2)
W przypadku socketów nie mogę nic znaleźć.
Nie chcę czytać z gniazda. Chcę skopiować gniazdo.
$ stat /dev/log
File: `/dev/log'
Size: 0 Blocks: 0 IO Block: 4096 gniazdo
Device: 5h/5d Inode: 11788 Links: 1
Access: (0666/srw-rw-rw-) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-12-27 14:39:10.118603993 +0100
Modify: 2010-12-27 14:39:09.878603995 +0100
Change: 2010-12-27 14:39:09.878603995 +0100
$ cp -dpR /dev/log /home/adam/skopiowane_gniazdo
$ ls /home/adam
Dokument2a skopiowane_gniazdo Obrazy Programowanie sr2
Dokumenty nowy_folder Pobrane Pulpit tty0-adam
$ stat ~/skopiowane_gniazdo
File: `/home/adam/skopiowane_gniazdo'
Size: 0 Blocks: 0 IO Block: 4096 gniazdo
Device: fd01h/64769d Inode: 4326202 Links: 1
Access: (0666/srw-rw-rw-) Uid: ( 500/ adam) Gid: ( 500/ adam)
Access: 2010-12-27 14:39:10.118603993 +0100
Modify: 2010-12-27 14:39:09.878603995 +0100
Change: 2010-12-27 20:09:13.630603995 +0100