gpt4 book ai didi

c - 在 spawn() 之后使用 _exit() 或 exit()?

转载 作者:太空狗 更新时间:2023-10-29 15:36:56 27 4
gpt4 key购买 nike

如维基百科所述 here :“在调用 spawn 时打开的文件在子进程中保持打开状态”。 (非常类似于exec())

好的,操作系统已经打开了一些文件并为我们新生的无意识进程做好了准备。假设我们的进程重新意识到那些先前打开的文件并最终决定终止;而像 C 这样的编程语言在终止之前需要一些内部进程清理。

我的问题是,这种清理会以任何方式影响那些打开的文件吗?据我所知,它们没有在任何地方注册,也没有在进程本身的任何地方注册。

答案应该以某种方式定义程序员在终止 spawn()ed 进程(甚至是 exec()ed 进程)时的行为。完全清理程序会以任何方式伤害 parent 吗? (例如通过删除临时文件),因此程序员不应该使用 _exit() 而不是 exit() 吗?

最佳答案

简短回答:。 C 运行时不会关闭在进程退出时打开的文件句柄,因此您可以退出父进程或子进程而不必担心弄乱其他进程。

内核 负责在没有打开的引用时关闭文件句柄,这发生在内核销毁进程时。内核可以很好地处理这种情况。

关于c - 在 spawn() 之后使用 _exit() 或 exit()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5595013/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com