我使用subprocess.Popen或subprocess.call時有問題,當我使用它們來執行命令行時會產生大量的輸出,python腳本會掛起,但是什麼是奇怪的是,等待一段時間後,腳本處於掛起狀態時,我發現cmd命令所指定的工作已經完成,只有腳本被掛起。Python:subprocess.Popen和subprocess.call掛起
subprocess.call(cmd, shell = True)
#OR
subprocess.Popen(cmd, stdout = subprocess.PIPE, stdin = subprocess.PIPE, shell = True)
# HANGS HERE
print "show something after subprocess"
請注意,最後一次打印永遠不會執行,但實際上cmd已被執行。
請注意,cmd與串口有關,所以當我拔出串口電纜時,一切都會好起來,並且最後一個打印狀態被執行。但是,當我使用終端時,即使插入串口,一切都很好,但只有在使用python腳本時纔會發生。
非常感謝
如果您不使用'subprocess.PIPE',而OP不是'subprocess.call',則沒有問題。 – interjay
這並不能解釋爲什麼'print'語句的輸出沒有顯示在父類中。 'Popen()'不會等待子進程,即使子進程被阻塞,試圖用滿緩衝區寫入管道。 – jfs