有什么方法可以创建一个新进程,即使在 exec 之后也能共享您的文件描述符表? clone(CLONE_FILES)
将不起作用,如手册页所述:
If a process sharing a file descriptor table calls execve(2), its file descriptor table is duplicated (unshared).
最佳答案
这可以通过向子进程注入(inject)一段自定义代码来完成,该代码负责接收 FD 并更新子进程的描述符表。
子进程应在其上创建 AF_UNIX 套接字和 recvmsg(),而父进程应使用 sendmsg() 复制并“向下传输”所需的文件描述符 - 参见 here
关于c - 在 child 完成 exec 后与 child 共享文件描述符表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44533936/