哪个是正确的函数调用os.fork()
后退出子进程?退出os.fork后的子进程()
的文档os._exit()
states:
的标准方式退出是
sys.exit(n)
。
_exit()
通常应该只在子处理的fork()
后使用。
它没有说明是否可以使用sys.exit()
终止子进程。所以:
- 是吗?
- 这样做是否有任何潜在的副作用?在
os._exit(n)
的文档,你没有提到的
哪个是正确的函数调用os.fork()
后退出子进程?退出os.fork后的子进程()
的文档os._exit()
states:
的标准方式退出是
sys.exit(n)
。
_exit()
通常应该只在子处理的fork()
后使用。
它没有说明是否可以使用sys.exit()
终止子进程。所以:
os._exit(n)
的文档,你没有提到的The unix way是,如果你是一个fork
的孩子,那么你可以拨打_exit。 exit和_exit
之间的主要区别是,exit
更整容 - 调用atexit
处理器,刷新stdio
等,而_exit
做的东西的最低金额在用户空间,刚开内核关闭其所有文件等
这用sys.exit
做exit
做的事情,并且做了更多的python解释器关机,其中os._exit
尽可能小。
如果你是fork
一个孩子,你叫exit
而不是_exit
那么你可能最终调用exit处理程序,当它退出导致不确定的行为家长将再次调用。
部分是
退出状态为n个过程,而不调用清除处理,刷新stdio的缓冲区等
那么,如何我正在读这篇文章,只要你共享文件处理程序,你应该使用os._exit()
(所以它们会被另一个进程关闭(),并且你自己清理缓冲区(如果它对你的情况很重要)没有共享资源(如“文件”) - 没关系。
所以如果你的子进程的计算只,并传送原始数据(而不是资源的处理程序),那么它的安全使用exit()
。