2017-06-02 106 views
0

我想從進程A向進程B發送一個tcp套接字的文件描述符,以便進程B可以使用相同的文件描述符創建另一個tcp套接字。爲什麼ioctl I_SENDFD沒有返回權限(EPERM)?

的想法是完全一樣passing file descriptors

關鍵函數調用如下:

ioctl(fd, I_SENDFD, fd_to_send); 

,但它始終返回EPERM/*不允許的操作*/

我驗證域套接字文件描述符fd正在工作,因爲我可以通過該fd發送正常的消息。

我不知道什麼是錯的。我GOOGLE了,似乎沒有人提到I_SENDFD有權限問題。我嘗試使用「sudo」來運行我的程序。它仍然不起作用。

我也試圖讓一切爲文件描述符fcntl(fd_to_send, F_SETFL, S_IRWXU|S_IRUSR|S_IWUSR|S_IXUSR|S_IRWXG| S_IRGRP|S_IWGRP|S_IXGRP|S_IRWXO|S_IROTH|S_IWOTH|S_IXOTH);

也不起作用。

如何解決?

回答

相關問題