0
我有一個使用os.popen在後臺運行tcpdump的Python進程。然後它讀取並處理來自tcpdump的輸出。該進程作爲後臺進程在後臺運行。當我從命令行執行這個過程時,它運行得很好 - 它啓動tcpdump並正確讀取輸出。但是,我希望這個過程在啓動時自動運行,並且我已經指示它在cron中這樣做。當我這樣做時,我的進程正在運行(按ps命令),但tcpdump不是。Python popen過程不會保持運行
是否有某些原因的行爲是不同的開始一個進程在克隆vs從命令行啓動它?我的代碼看起來是這樣的:當有一個問題
p = os.popen('/usr/sbin/tcpdump -l -i eth0')
while True:
data = p.readline()
# do something with data
嘗試使用'p = subprocess.Popen(['/ usr/sbin/tcpdump'],stdout = subprocess.PIPE,stderr = subprocess.PIPE])'打開它,並檢查'p.stderr'以查看是否出於某種原因tcpdump在啓動時失敗。 (當然似乎是這種情況)。也許eth0還沒有準備好呢? – dano
感謝您讓我考慮這一點並幫助我解決問題。顯然,界面還沒有到。 – kittyhawk