【发布时间】:2013-02-03 04:55:28
【问题描述】:
我有以下 Python sn-p,但无法解释为什么它的行为方式如此。
import subprocess
bash1 = subprocess.Popen(["/bin/bash","-l", "-i"], stdin=subprocess.PIPE)
print "Checkpoint 1"
bash2 = subprocess.Popen(["/bin/bash","-l", "-i"], stdin=subprocess.PIPE)
print "Checkpoint 2"
bash1.communicate("echo 'works1'")
bash2.communicate("echo 'works2'")
print "OK"
当我运行它时,我得到以下输出:
[user@localhost ~]$ python test.py
Checkpoint 1
Checkpoint 2
[1]+ Stopped python test.py
[user@localhost ~]$ [user@localhost ~]$ echo 'works1'
works1
[user@localhost ~]$ logout
[user@localhost ~]$ fg
python test.py
[user@localhost ~]$ echo 'works2'
works2
[user@localhost ~]$ logout
OK
[user@localhost ~]$
- 为什么 Python 进程在第二次 Popen 调用时停止? (被 tty 输入停止),如何避免?
- 为什么在 echo 'works1' 完成后会收到注销消息,如何避免?
【问题讨论】:
-
您是否尝试在通信呼叫结束时添加换行符?
bash1.communicate("echo 'works1'\n"). -
我试过了,结果还是一样。
标签: python bash subprocess popen