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

alk*_*alk 35 unix sockets posix unix-socket fhs

是否存在将表示端点的"文件"放置到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).

因此,路径长度上的"限制"应该保留在应用程序的文件/路径名配置之外.

JB.*_*JB. 41

FHS说:/run

  • 感谢FFS的参考,因为我错过了它.无论如何,普通用户无法写入/ var/run normaly,因为它不适用于相关应用程序.那么,是否有/ var/run的替代方案? (3认同)
  • 来自2019年的说明:许多发行版现在正在将`/ var / run`迁移到`/ run`中。 (3认同)

Hib*_*u57 6

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

  • 感谢您的建议。做出设计决策是为了使UDS文件的基本路径可配置,并将其默认设置为`/ tmp /`,因此文件将转到`/ tmp / <app-specific-dir> /`。使用的平台是Red-Hat-Linux,Suse-Linux和z / Linux。 (2认同)