運行以下命令:yes | head -1
,從外殼,輸出y
。使用Python的子模塊與外殼無限期掛起稱之爲:Python子進程.Popen塊與外殼和管道
import subprocess
arg = "yes | head -1"
process = subprocess.Popen(arg,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
)
print "Command started: %d" % process.pid
r = process.communicate()
print "Command ended: %s %s" % r
殺外生使用kill
沒有幫助的過程中,也沒有使子進程它的使用preexec_fn=os.setsid
會議領導。
什麼可能導致這種行爲,並有反正我可以阻止它?
我運行蟒蛇2.7.3和我/bin/sh
是GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin12)
use'「命令結束:%r」%(r,)'因爲'r'是一個元組。 – jfs
我無法在Ubuntu上重現Python 2.7。它工作正常+/- [預期的「寫」錯誤](http://stackoverflow.com/q/22077881/4279)。 – jfs
謝謝,那個鏈接足以解決它! – sobel