在哪里放置Unix域(AF_UNIX)套接字的端点(文件)?

时间:2011-09-28 08:27:40

标签: sockets unix posix unix-socket fhs

是否存在将表示端点的'files'放置到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 个答案:

答案 0 :(得分:34)

FHS说:/var/run

答案 1 :(得分:6)

在Ubuntu上,netstat命令在多个不同的位置显示UNIX域套接字。 JB提出的/var/run中的一些,不管是少数;其中大部分都在@/tmp/…(我相信@指定抽象名称,这是特定于Linux的),以及其他一些在各种应用程序的特定位置。所以在实践中,最常见的位置似乎在/tmp,至少在Ubuntu上,这是一个相当常见的平台。注意/tmp位置在这里特别有意义,因为必须由每个bind创建UDS并在之后删除(当套接字关闭时,或者应用程序退出时,或者应用程序启动时)下一次和下一次调用bind之前)。

答案 2 :(得分:-2)

在Android中,您可以将其放在/dev/socket/