用例是我设计了一个多进程服务器,其中工作进程必须能够将文件描述符发送给另一个,特定的(取决于fd)工作进程,并且我不会想要保持O(n ^ 2)unix域套接字打开,让它们全部相互连接。
当然,替代方案是让他们根据需要打开一个连接,发送一条消息,然后关闭连接,每次他们需要发送一个fd。
我关心的平台是Linux,OSX,HP-UX,AIX和Solaris。
答案 0 :(得分:0)
在无连接模式下使用时,是否可以使用unix域套接字在进程之间发送文件描述符?
是。从手册页:
UNIX域套接字支持传递文件描述符或进程 使用辅助数据的其他进程的凭据。
可靠性不是问题。数据报套接字总是可靠的。再次从手册页:
UNIX 域数据报套接字总是可靠的,不会重新排序 数据报
对于Unix域套接字,唯一有形的(或者应该考虑的)差异b / w流和数据报套接字是一个面向连接而一个连接更少。 "流"和#34;绑定消息"不关心。
手册页还提到了SEQPACKET
套接字类型,它允许在面向连接的设置中保留消息边界。
因此,人们可以保持简单并使用数据报套接字。