linux - 父/子进程关闭文件描述符

标签 linux file fork parent-child system-calls

如果你在一个父进程上执行一个 fork() 并创建一个子进程,然后子进程关闭从 fork 继承的 fd。

文件是否会在父级中保持打开状态,因为它们是独立的?标准 I/O 或 stderr 呢?

最佳答案

不管一个文件描述符是代表一个文件还是一个设备,也不管它是否曾经作为标准的 i/o 描述符传递给任何进程:如果你在一个进程中关闭它,另一个进程仍然有一个有效的描述符。

(这很自然。想象一下描述符将与另一个进程中的描述符相互依赖。然后,如果子进程意外崩溃,父进程甚至很难记录这个事实,一旦检测到崩溃。它无法通过任何先前打开的描述符记录事实,因为所有形式的进程退出都涉及关闭所有打开的描述符。因此,故障模式往往会跨进程传播。此外,即使是常规的、无错误的 I/O通过这种假设的共享描述符的模式将在竞争条件中大量存在。)

关于linux - 父/子进程关闭文件描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10198541/

相关文章:

linux - 没有 samba 的 Netbios 名称

java - 文件路径在 NetBeans 中有效,但在内置 JAR 文件中无效

c++ - 将二维数组保存到文件 C++

c - 从文件中读取双二进制数据

linux - 对于 jailed Linux 用户,forkpty 失败

c++ - fork() 到底在做什么?在我的 C++ 程序中

c - 这足以检测竞争条件吗?

linux - 模块 cwd 帮助

一个fork child能判断它是fork还是vfork吗?

git - 我可以将 git 上的 fork 项目更新为原始/主副本吗?