Где разместить конечные точки (файлы) сокетов домена Unix (AF_UNIX)? - PullRequest
33 голосов
/ 28 сентября 2011

Существует ли соглашение о том, где помещать «файлы», представляющие конечные точки, в доменные сокеты Unix?

Я склонен ставить их на /tmp/some-application-specific-subdir-name/, но мне интересно, есть ли более распространенное место.

Фон таков, что POSIX не совсем ясно о максимальной длине пути к доступу таких "файлов":

Размер sun_path намеренно оставлен неопределенным. Это потому, что разные реализации используют разные размеры. Например, 4.3 BSD использует размер 108, а 4.4 BSD использует размер 104. Поскольку большинство реализаций происходят из версий BSD, размер обычно находится в диапазоне от 92 до 108.

Приложения не должны предполагать определенную длину для sun_path или предполагать, что он может содержать {_POSIX_PATH_MAX} байтов (256).

Таким образом, это «ограничение» на длину пути должно быть исключено из конфигураций файла / имени пути приложения.

Ответы [ 3 ]

35 голосов
/ 28 сентября 2011

FHS говорит: /var/run

6 голосов
/ 30 марта 2013

В Ubuntu команда netstat показывает доменные сокеты UNIX в разных местах.Некоторые, хотя некоторые, в /var/run, как предложил JB;большинство из них в @/tmp/… (я полагаю, что @ обозначает абстрактные имена, которые специфичны для Linux), а некоторые другие в определенных местах различных приложений.Таким образом, на практике наиболее распространенное местоположение, кажется, находится в /tmp, по крайней мере, в Ubuntu, который является довольно распространенной платформой.Обратите внимание, что расположение /tmp особенно имеет здесь смысл, так как UDS должен создаваться каждым bind и впоследствии удаляться (либо при закрытии сокета, либо при выходе из приложения, либо при запуске приложения в следующий раз идо следующего вызова bind).

0 голосов
/ 16 марта 2016

В Android вы можете поместить его в /dev/socket/

...