2011-07-19 40 views
18

在Python中,有沒有辦法調用一個新的進程,把它交給相同的上下文,比如標準的IO流,關閉當前進程,並且控制被調用的進程?這將有效地「取代」這個過程。用調用子進程替換當前進程?

我有一個程序,其行爲我想重複。但是,它使用第三方庫,似乎我真正能夠殺死該庫調用的線程的唯一方法是退出()我的python進程。

此外,它似乎可以幫助管理內存。

回答

22

您可能感興趣的os.execv(),朋友們:

這些功能全部執行新的程序,替換當前 過程;他們不回來。在Unix上,新的可執行文件在當前進程中加載​​ ,並且與 調用者具有相同的進程ID。錯誤將被報告爲OSError異常。

+7

請注意,調用看起來有點像'os.execvp('python.exe',['python.exe','arg1','arg2'])''。注意有點反直覺的''python.exe'出現兩次。有關更多詳細信息,請參見[此答案](http://stackoverflow.com/a/18552137/1143274)。 –