哪個是正確的函數調用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()
。