有没有办法创建一个新的进程,即使在exec之后共享你的文件描述符表? clone(CLONE_FILES)
将无效,正如手册页所示:
如果共享文件描述符表的进程调用execve(2),则其文件描述符表是重复的(非共享)。
答案 0 :(得分:2)
这可以通过向子进程注入负责接收FD并更新子描述符表的自定义代码来完成。
子进程应该在其上创建AF_UNIX套接字和recvmsg(),而父进程应该重复并且" stream down"使用sendmsg()获取所需的文件描述符 - 请参阅here