在孩子完成了一个exec

时间:2017-06-14 01:25:32

标签: c linux fork

有没有办法创建一个新的进程,即使在exec之后共享你的文件描述符表? clone(CLONE_FILES)将无效,正如手册页所示:

  

如果共享文件描述符表的进程调用execve(2),则其文件描述符表是重复的(非共享)。

1 个答案:

答案 0 :(得分:2)

这可以通过向子进程注入负责接收FD并更新子描述符表的自定义代码来完成。

子进程应该在其上创建AF_UNIX套接字和recvmsg(),而父进程应该重复并且" stream down"使用sendmsg()获取所需的文件描述符 - 请参阅here