在无连接模式下使用时,是否可以使用unix域套接字在进程之间发送文件描述符?

时间:2015-05-05 22:46:50

标签: ipc unix-socket

基本上,我想知道我是否可以将thisthis混合。

用例是我设计了一个多进程服务器,其中工作进程必须能够将文件描述符发送给另一个,特定的(取决于fd)工作进程,并且我不会想要保持O(n ^ 2)unix域套接字打开,让它们全部相互连接。

当然,替代方案是让他们根据需要打开一个连接,发送一条消息,然后关闭连接,每次他们需要发送一个fd。

我关心的平台是Linux,OSX,HP-UX,AIX和Solaris。

1 个答案:

答案 0 :(得分:0)

  
    

在无连接模式下使用时,是否可以使用unix域套接字在进程之间发送文件描述符?

  

是。从手册页:

  

UNIX域套接字支持传递文件描述符或进程          使用辅助数据的其他进程的凭据。

可靠性不是问题。数据报套接字总是可靠的。再次从手册页:

  

UNIX          域数据报套接字总是可靠的,不会重新排序          数据报

对于Unix域套接字,唯一有形的(或者应该考虑的)差异b / w流和数据报套接字是一个面向连接而一个连接更少。 "流"和#34;绑定消息"不关心。

手册页还提到了SEQPACKET套接字类型,它允许在面向连接的设置中保留消息边界。

因此,人们可以保持简单并使用数据报套接字。