epoll在多进程环境中

时间:2015-03-31 08:04:25

标签: file epoll descriptor multiprocess

在我的客户端应用程序中,我使用epoll和udp套接字从服务器接收数据包。客户端应用程序有两个进程,p1和p2。

使用此函数获取fd的sock = socket(AF_INET,SOCK_DGRAM,0);

在进程P1中,socket()函数从4开始返回fd' s。 P1有fd' 4,5,6,7,8等

在进程P2中,socket()函数从4开始返回fd' s。 P2有fd< 4,5,6

现在这两个过程都有相同的fd,但端口号不同。

进程P1和P2都使用epoll进行读/写。 在这种情况下,是否有机会将数据包发送到P2,这实际上是针对P1发生的?

1 个答案:

答案 0 :(得分:0)

没有。每个进程都有自己的文件(套接字)描述符集。 FD的值可以与其他过程的值相同。没问题。因此,没有任何数据包可以让P1达到P2。

您可以回想一下,对于每个进程,对应于stdin,stdout和stderr的文件描述符0,1和2都是打开的。它们并不是独一无二的。