Where to place Unix Domain (AF_UNIX) sockets' end points (files)?

僤鯓⒐⒋嵵緔 提交于 2019-11-27 10:17:39

问题


Is there a convention where to place the 'files' representing the end points to Unix domain sockets?

I tend to put them to /tmp/some-application-specific-subdir-name/, but I wonder if there is a more common place.

The background is, that POSIX is not clear about the maximum path length to access such 'files':

The size of sun_path has intentionally been left undefined. This is because different implementations use different sizes. For example, 4.3 BSD uses a size of 108, and 4.4 BSD uses a size of 104. Since most implementations originate from BSD versions, the size is typically in the range 92 to 108.

Applications should not assume a particular length for sun_path or assume that it can hold {_POSIX_PATH_MAX} bytes (256).

So this "restriction" on the path's length should be kept out of the application's file/path name configurations.


回答1:


The FHS says: /run

(It used to be /var/run.)




回答2:


On Ubuntu, the netstat command shows UNIX Domain Sockets in multiple different places. Some, however a few, in /var/run, as JB suggested; most of them in @/tmp/… (I believe the @ designate abstract names, which is Linux specific), and some others in various application's specific places. So in practice, the most common location seems to be in /tmp, at least on Ubuntu, which is a rather common platform. Note the /tmp location particularly makes sense here, as UDS has to be created by each bind and to be deleted afterwards (either when the socket is closed, or when the application exit, or when the application starts the next time and before its next invocation to bind).




回答3:


In Android you can place it in /dev/socket/



来源:https://stackoverflow.com/questions/7580346/where-to-place-unix-domain-af-unix-sockets-end-points-files

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!