无法找出为什么recvmsg()阻止当我在Ubuntu上尝试这个测试应用程序。使用unix域套接字和共享FD的
http://web.mit.edu/kolya/misc/break-chroot.c
感谢
无法找出为什么recvmsg()阻止当我在Ubuntu上尝试这个测试应用程序。使用unix域套接字和共享FD的
http://web.mit.edu/kolya/misc/break-chroot.c
感谢
我强烈记得文件描述符只有在经过Unix的数据报套接字,不是Unix流套接字工作。这也可能需要重新发送。你的例子太大了(我太懒了)做一个适当的分析,但看看here的替代示例代码。我在FreeBSD和Linux上都使用过这个例子,它可以工作。
谢谢,您引用的代码在我的环境中也能正常工作。 但问题是,当我设置msg.msg_iovlen = 0和msg.msg_iov = NULL时,它不能在ubuntu上工作(我不确定其他风格的linux/unix的行为)。 recvmsg()不返回并阻止等待消息。我在我的帖子中提到的例子,设置msg.msg_iov = NULL。 – harishvk27 2009-07-14 17:27:15
你能否把这个例子降低到最低限度来重现,比如父母和孩子将fd传递给*/dev/null *到另一个? (顺便说一下,我以前没见过fd传递NULL * msg_iov *之前 - 也许你可能会发送一个字节以及辅助数据?) – pilcrow 2009-07-14 15:53:08