为什么ioctl I_SENDFD没有返回权限(EPERM)?

时间:2017-06-02 04:16:02

标签: sockets tcp file-descriptor ioctl

我想从进程A向进程B发送tcp套接字的文件描述符,以便进程B可以使用相同的文件描述符创建另一个tcp套接字。

这个想法与passing file descriptors

完全相同

关键函数调用如下:

ioctl(fd, I_SENDFD, fd_to_send);

但它总是返回EPERM / *不允许操作* /

我验证了域套接字文件描述符fd正在运行,因为我可以通过该fd发送正常消息。

我不知道出了什么问题。我用谷歌搜索,似乎没有人提到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);

的所有内容

也不起作用。

如何解决?

1 个答案:

答案 0 :(得分:0)

我找到了问题的答案。 Linux不支持这一点,但仍保留API,这是邪恶的。

有关此问题的详细信息,请参阅ioctl giving Invalid Argument

这是一个解决方案解决方案:Can I share a file descriptor to another process on linux or are they local to the process?

(我没试过)

相关问题