我在程序A中打开一个文件,它的文件描述符是3。使用fork,然后执行一个execve,我执行另一个程序B,在这个程序B中,我立即打开另一个文件。这个文件描述符是4。如果A和B没有共享文件描述符表,那么在B中打开的文件的文件描述符应该是3。我需要创建子进程,而不是共享父地址空间,包括打开的文件。
非常感谢
发布于 2011-05-06 12:27:25
子进程不共享相同的FD表,您只是忘记在子进程中关闭它们或将它们标记为close-on-exec。
发布于 2011-05-06 12:27:30
在exec新进程之前关闭该文件。在fork()和exec()之间的代码中这样做。
https://stackoverflow.com/questions/5906785
复制相似问题