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

正如维基百科在此处所述:“在进行生成调用时打开的文件在子进程中保持打开状态”。 (与exec()非常相似) 好的,操作系统已经打开了一些文件。为我们新生的不知情的过程做好准备。假设我们的进程不知道那些先前打开的文件并最终决定终止;而像C这样的编程语言需要在终止之前清理一些内部进程。 我的问题是,这种清理会以任何方式影响那些打开的文件吗? AFAIK他们没有在任何地方注册,也没有注册过程中的任何内容。 答案应该以某种方式定义程序员的行为,同时终止spawn()ed过程(甚至是exec()ed过程)。完全清理程序能否以任何方式伤害父母? (例如通过删除临时文件)因此程序员不应该使用_exit()而不是exit()?     
已邀请:
简答:不。 C运行时不会关闭在进程退出时打开的文件句柄,因此您可以退出父进程或子进程,而无需担心弄乱另一个进程。 一旦没有对它的开放引用,内核负责关闭文件句柄,这在内核销毁进程时发生。内核可以很好地处理这种情况。     

要回复问题请先登录注册