2
我打電話給一個子進程並希望禁用任何輸出到我的shell。我試圖用做到這一點:防止子進程的子進程寫入標準輸出
with tempfile.TemporaryFile() as tempf:
proc = Popen(cmd, stdout=tempf, stderr=tempf)
proc.communicate()
但仍有出現在終端輸出的一些(但少於正常)。問題可能是被調用的進程使用了os.execvp
?任何建議,以完全禁用所有子過程的輸出?
注意
重定向到devnull是禁止輸出的一個更好的辦法:
with open(os.devnull, 'w') as tempf:
proc = Popen(cmd, stdout=tempf, stderr=tempf)
proc.communicate()
回答過的問題!
非常簡單的解決方案:被調用的進程使用CORBA,服務器實際上是打印出來的。
你的例子使用''popen()'',而不是''subprocess'' – Carpetsmoker 2012-02-05 22:46:07
subprocess默認情況下會繼承父類的stdout和stderr。在尋找wild ttys之後,sububprocess無法獲得你的標準輸入。你正在執行哪些程序? – phihag 2012-02-05 22:46:43
@Carpetsmoker:Popen生活在更新的Python版本的模塊子進程中 – 2012-02-05 22:47:16