次の Python スニペットがありますが、なぜこのように動作するのか説明できません。
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 ~]$
- 2 回目の Popen 呼び出しで Python プロセスが停止するのはなぜですか? (tty入力で停止)、それを回避する方法は?
- echo 'works1' の終了後にログアウト メッセージが表示されるのはなぜですか? また、それを回避するにはどうすればよいですか?