Книга: Разработка приложений в среде Linux. Второе издание
17.4.1. Адреса домена Unix
17.4.1. Адреса домена Unix
Адреса для сокетов домена Unix являются путевыми именами в файловой системе. Если файл еще не существует, то он создается как файл сокетного типа в тот момент, когда сокет привязывается к путевому имени через функцию bind()
. Если уже существует файл (или даже сокет) с указанным путевым именем, то функция bind()
завершается и возвращает значение EADDRINUSE
, bind()
устанавливает права доступа для созданного файла сокета равными 0666, как измененные текущей маской umask.
Для того чтобы присоединиться к существующему сокету, процесс должен иметь права на чтение и запись в файл сокета[123].
Адреса сокетов домена Unix передаются через структуру struct sockaddr_un
.
#include <sys/socket.h>
#include <sys/un.h>
struct sockaddr_un {
unsigned short sun_family; /* AF_UNIX */
char sun_path[UNIX_PATH_MAX]; /* путевое имя */
};
В ядре Linux 2.6.7 значение переменной UNIX_PATH_MAX
равно 108
, но в последующих версиях ядра Linux оно может измениться.
Первый член sun_family
должен содержать AF_UNIX
для того, чтобы показать, что структура содержит адрес домена Unix. Параметр sun_path
хранит путевое имя, которое нужно использовать для соединения. Если системным вызовам, относящимся к сокету, передается размер адреса, то передаваемая длина равна количеству символов в путевом имени плюс размер элемента sun_family
. Параметр sun_path
не обязательно должен заканчиваться ''
, хотя обычно делают именно так.
- 17.4. Сокеты домена Unix
- 17.4.4. Запуск примеров домена Unix
- Адреса сокетов
- Глава 1 UNIX для начинающих
- Глава 2 Обнаружение адреса
- 5.21 IP-адреса, интерфейсы и множественное пребывание
- Тип данных домена
- ЧАСТЬ 1 ВВЕДЕНИЕ В IPC UNIX
- 3.6.1. Адресация в Linux
- 4.12.2. Переадресация
- Логика «от адресата»
- Обман MAC-адреса