2017-07-25 41 views
0

我有一個python腳本,其輸出被傳送到日誌文件中。我可以使用os.exec調用從內部重新啓動文件,但如果我這樣做,新進程不會將其輸出寫入日誌文件。如何在重新啓動進程後保持輸出重定向?將輸出重定向到os.exec後的文件*

我的腳本開始:

python3.6 script.py >> home/pi/log/telegram_bot.log 2>&1 & 

我重啓線:

import os 
import sys 
os.execv(sys.executable, [sys.executable] + sys.argv) 
+0

你使用os.execv而不是子進程的任何原因? – Alan

+0

@Alan他們有不同的用途:子進程產生一個子進程(讓你有兩個),exec將當前進程轉換爲新進程。 @Nexxurs,我不認爲['exec *'](https://docs.python.org/3.6/library/os.html#process-management)系列提供了一個重定向流的接口。但是,爲什麼麻煩執行你的過程而不是再次調用你的主函數呢? – Will

+0

這是回答[這裏](https://stackoverflow.com/questions/8500047/how-to-inherit-stdin-and-stdout-in-python-by-using-os-execv) – user2722968

回答

0

我不能重現此問題。這裏是我的first.py

import os 
import sys 
os.execv(sys.executable, [sys.executable, "second.py"]) 

這裏的second.py

print("Hello") 

這裏就是我如何運行它,並檢查結果。如你所見,它工作正常:

$ python first.py >> logfile 2>&1 & 
[1] 3098 
$ wait 
$ cat logfile 
Hello