Книга: Программирование для Linux. Профессиональный подход
5.5.4. Локальные сокеты
5.5.4. Локальные сокеты
Сокеты, соединяющие процессы в пределах одного компьютера, работают в локальном пространстве имен (PF_LOCAL
или PF_UNIX
, это синонимы). Такие сокеты называются локальными или UNIX-сокетами. Их адресами являются имена файлов, указываемые только при создании соединения.
Имя сокета задается в структуре типа sockaddr_un
. В поле sun_family
необходимо записать константу AF_LOCAL
, указывающую на то, что адрес находится в локальном пространстве имен. Поле sun_path
содержит путевое имя файла и не может превышать 108 байтов. Длина структуры sockaddr_un
вычисляется с помощью макроса SUN_LEN()
. Допускается любое имя файла, но процесс должен иметь право записи в каталог, где находится файл. При подключении к сокету процесс должен иметь право чтения файла. Несмотря на то что файловая система может экспортироваться через NFS на разные компьютеры, только процессам, работающим в пределах одного компьютера, разрешается взаимодействовать друг с другом посредством локальных сокетов.
При работе в локальном пространстве имен допускается только протокол с номером 0.
Локальный сокет является частью файловой системы, поэтому он отображается командой ls
(обратите внимание на букву s в строке режима):
% ls -l /tmp/socket
srwxrwx--x 1 user group 0 Nov 13 19:16 /tmp/socket
Если локальный сокет больше не нужен, его файл можно удалить с помощью функции unlink()
.