我在程序A中打开一个文件。它的文件描述符是3.使用fork后跟一个execve我执行另一个程序B,我立即打开另一个文件。这个文件描述符是4.如果A和B没有共享文件描述符表,那么在B中打开的文件的文件描述符应该是3.我需要创建不共享父文件地址空间的子进程,包括打开文件。
非常感谢
答案 0 :(得分:2)
孩子不共享同一个FD表,你只是忘了在孩子中关闭它们或者将它们标记为接近执行。
答案 1 :(得分:1)
在exec
新进程之前关闭文件。在fork()
和exec()
之间的代码中执行此操作。