Ответ 1
(Раньше это было /var/run
.)
Существует ли соглашение о том, где помещать "файлы", представляющие конечные точки, в доменные сокеты 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).
Таким образом, это "ограничение" на длину пути должно быть исключено из конфигураций файла приложения/имени пути.
(Раньше это было /var/run
.)
В Ubuntu команда netstat
показывает UNIX Domain Sockets в разных местах. Некоторые, однако, несколько, в /var/run
, как предложил JB; большинство из них находятся в @/tmp/…
(я считаю, что @
обозначает абстрактные имена, которые являются специфичными для Linux) и некоторые другие в различных конкретных приложениях. Таким образом, на практике наиболее распространенное расположение, по-видимому, находится в /tmp
, по крайней мере, на Ubuntu, что является довольно распространенной платформой. Обратите внимание, что расположение /tmp
особенно здесь имеет смысл, поскольку UDS должен быть создан каждым bind
и впоследствии удален (либо когда сокет закрыт, либо когда приложение выходит, либо когда приложение запускается в следующий раз и перед его следующим вызовом на bind
).
В Android вы можете поместить его в /dev/socket/