dae*_*hee 3 sockets linux unix-socket
在Linux中,有没有使用AF_LOCAL(unix域套接字)在不使用文件的情况下在进程(IPC)之间进行通信的示例?(在只读文件系统上)
我必须使用Unix Domain套接字,但我没有在系统上创建文件创建/写入权限.
先感谢您.
您可以使用"抽象套接字地址"创建一个unix域套接字.简单地做出的第一个字符sun_path的字符串sockaddr_un传递给bind可以'\0'.在这个初始NUL之后,将一个字符串写入剩余部分sun_path并用NUL UNIX_PATH_MAX(或其他任何东西)填充它.
以这种方式创建的套接字将不具有任何文件系统条目,而是将被放置在不可见的系统范围的套接字命名空间中.套接字名称不是以null结尾的字符串; 它是以NUL开头的UNIX_PATH_MAX长度字符串,任何其他NUL都没有特殊意义.因此,填写该名称至关重要,否则您将在该名称中添加额外未初始化的内存垃圾,并产生意外结果.按照惯例,这通常使用NUL垫完成,但这取决于您.
有关更多信息,请参阅unix(7),特别是有关抽象套接字地址的部分.这里也可以找到一个完整的例子.