Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
如果您在父进程上执行 fork() 并创建子进程,然后子进程会关闭从 fork 继承的 fd。
文件会在父级中保持打开状态,因为它们是独立的吗?标准 i/o 或 stderr 呢?
不管文件描述符代表文件还是设备,也不管它是否曾经作为标准 i/o 描述符传递给任何进程:如果您在一个进程中关闭它,另一个进程仍然有一个有效的描述符。
(这很自然。想象一下,描述符将与另一个进程中的描述符相互依赖。然后,如果子进程意外崩溃,一旦检测到崩溃,父进程甚至很难记录这一事实. 它无法通过任何先前打开的描述符记录该事实,因为所有形式的进程退出都涉及关闭所有打开的描述符。因此,故障模式倾向于跨进程传播。此外,即使是通过此类的常规、无错误 I/O 模式假设的共享描述符在竞争条件下会比比皆是。)