2014-02-08 25 views
2

我可能看起來不夠努力,但我試圖用另一個python腳本替換正在運行的python腳本。根據我所做的研究,使用os.execl函數可能是我正在尋找的。我對這個函數應該使用的參數有點困惑。任何人都可以請幫我解釋一下如何用另一個替換當前正在運行的Python腳本。用os.execl替換正在運行的python腳本

回答

1

exec *()familiy替換整個過程,保留進程號(PID)。如果這是你想要的...

Python解釋器中的一個例子。我用echo來替換解釋器。 'args'中的第一項成爲argv [0],它是在ps或top中看到的進程名稱。

>>> import os 
>>> args=['process_name', 'bla', 'ble'] 
>>> os.execlp("/bin/echo", *args) 
bla ble 
/Users/epx $ 
+0

感謝您的幫助,但我仍然有點困惑。如果我有一個名爲test.py的腳本,它位於/ home/pi目錄中,我將如何使用test.py腳本替換當前正在運行的腳本? – user3286192

+0

您將擁有/home/pi/test.py而不是/ bin/echo。該腳本必須具有執行權限和相應的#!/ usr/bin/env python頭文件。 (確保它在執行execl()之前執行。)我猜如果你的當前目錄是/ home/pi,或者只是'test.py'會工作,如果PATH包含/ home/PI。 – epx

+0

非常感謝您,我認爲現在對這件事的作用有一個小小的把握! – user3286192