無法找出爲什麼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