当前位置: 技术问答>linux和unix
关于子进程间共享套接字描述符的问题?
来源: 互联网 发布时间:2015-12-31
本文导语: 我的程序功能是为多台主机转发消息。当其他主机与我连接时为这台主机分配一个进程,该进程处理我的程序与这台主机间的通信,同时我将这个与这台主机通信的套接字描述符以及这台主机的IP地址存入共享内存中...
我的程序功能是为多台主机转发消息。当其他主机与我连接时为这台主机分配一个进程,该进程处理我的程序与这台主机间的通信,同时我将这个与这台主机通信的套接字描述符以及这台主机的IP地址存入共享内存中。
主机A与我相连,我为主机A建立一个子进程a,该子进程接收由A发来的消息,之后将A的IP地址和我与他通信的套接字描述符4,存入共享内存中。
之后主机B与我相连,我为主机B建立一个子进程b,该子进程接收由B发来的消息,
之后将B的IP地址和我与他通信的套接字描述符5存入共享内存中。
现在主机A通过我向B发送消息。子进程a收到消息后根据目的地址在共享内存中找
到我与主机B通信的套接字描述符5,然后子进程a使用描述符5向主机B发送消息,发生错误,错误:Bad file descriptor!
我怀疑是子进程间的套接字描述符不能共享,子进程a不能使用描述符5,是这样吗?
如果是这样的话,这个问题该如何解决?
主机A与我相连,我为主机A建立一个子进程a,该子进程接收由A发来的消息,之后将A的IP地址和我与他通信的套接字描述符4,存入共享内存中。
之后主机B与我相连,我为主机B建立一个子进程b,该子进程接收由B发来的消息,
之后将B的IP地址和我与他通信的套接字描述符5存入共享内存中。
现在主机A通过我向B发送消息。子进程a收到消息后根据目的地址在共享内存中找
到我与主机B通信的套接字描述符5,然后子进程a使用描述符5向主机B发送消息,发生错误,错误:Bad file descriptor!
我怀疑是子进程间的套接字描述符不能共享,子进程a不能使用描述符5,是这样吗?
如果是这样的话,这个问题该如何解决?
|
跨进程是不能直接这么使用的,要用dup来复制file id