如何在不创建套接字文件的情况下使用Unix域套接字

5
在Linux中,是否有使用AF_LOCAL(Unix域套接字)在进程之间进行通信(IPC)而不使用文件的示例?(在只读文件系统上)
我必须使用Unix域套接字,但我没有系统上的文件创建/写入访问权限。
提前感谢您。
1个回答

11
你可以使用“抽象套接字地址”创建Unix域套接字。只需在传递给bindsockaddr_un中的sun_path字符串的第一个字符为'\0'。在此初始NUL之后,将字符串写入其余部分的sun_path,并使用NUL(或其他任何内容)填充到UNIX_PATH_MAX
以这种方式创建的套接字将不会有任何文件系统条目,而是将被放置到不可见的系统范围套接字命名空间中。套接字名称不是以空终止的字符串;它是一个长度为UNIX_PATH_MAX的字符串,以NUL开头,其他任何NUL都没有特殊意义。因此,重要的是要填充该名称,否则您将在名称中放入额外的未初始化内存垃圾,并产生意外结果。按照惯例,通常使用NUL填充,但由您决定。

欲了解更多信息,请参考unix(7),特别是关于抽象套接字地址的部分。这里还可以找到一个完整的示例here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接