用于共享和关闭文件描述符的linux辅助数据

时间:2013-08-04 08:05:19

标签: linux sockets

linux辅助数据可用于通过unix域套接字在unix中跨多个进程共享文件描述符。该应用程序有两个过程A& B监听网络上的数据,并在接收到新连接时,接收方进程(A或B)接受连接。现在支持进程A接受连接,为了与进程B共享这个新的套接字描述符,进程A向进程B发送辅助数据。这一切都没问题。

  1. 此时,两个进程都具有相同的套接字描述符集。现在假设进程B由于某种原因关闭套接字描述符。那么过程B如何指示处理A?可以用某种方式使用辅助数据方法吗?还是有更好的方法?
  2. 当进程A接受新连接时,假设新的套接字描述符为4.当使用与进程B的辅助数据共享相同时,套接字描述符值是否与4相同?或者,当共享套接字描述符时,它可以在进程之间有所不同吗?

1 个答案:

答案 0 :(得分:3)

参见section 17.4 in “Advanced Programming in the UNIX Environment” 有关文件描述符传递的一些很好的信息(和一个很好的图片!)。 特别是:

  

从技术上讲,我们正在传递一个指向打开文件表条目的指针   一个过程到另一个。该指针被赋予第一个可用的指针   接收过程中的描述符。 (说我们正在通过   开放描述符错误地给出了描述符的印象   接收过程中的号码与发送过程中的号码相同,   这通常不是真的。)

因此,当从进程A向进程B传递文件描述符时,描述符编号 可以是不同的。进程B也没有关于描述符的任何信息 过程A中使用的数字。

没有“内置”机制来传递关闭文件的信息 从B回到A的描述符。您需要为此目的发送自定义消息。