0
我使用subprocess.Popen
和Popen.communicate
運行一個超時的過程獲取輸出,類似於給出的建議是這樣一個問題:Subprocess.Popen即使在超時的情況下
因此,我現在用的是下面的代碼:
with Popen(["strace","/usr/bin/wireshark"], stdout=subprocess.PIPE,stderr=subprocess.PIPE, preexec_fn=os.setsid) as process:
try:
output = process.communicate(timeout=2)[0]
print("Output try", output)
except TimeoutExpired:
os.killpg(process.pid, signal.SIGINT) # send signal to the process group
output = process.communicate()[0]
print("Output except",output)
return output
而且我得到以下輸出:
Output except b''
和b''
作爲返回值。
即使TimeoutExpired
異常被引發,我怎樣才能獲得進程的輸出(輸出直到它被殺死)?
不幸的是,因爲這不殺死進程組 - 因此python腳本被阻止。如果我手動殺死進程,輸出變量保持爲空。 – Sleik