subprocess を使用して Linux で xterm を実行し、それが他のプロセスを実行する場合、Python (2.6.5) はプロセス (xterm) の実行が完了したことを決して認識しないようです。
次のコードを検討してください。
import subprocess
import shlex
import time
proc = subprocess.Popen(shlex.split('xterm -iconic -title "FOO_BAR" -e sleep 5'))
while True:
if proc.poll():
print 'Process completed'
time.sleep(0.1)
これは、Python インタープリターを終了するまで無限にループします。これはおそらく xterm の奇妙なことが原因であり、Python サブプロセス モジュールの直接の原因ではないと推測していますが、状況に光を当てることができる他の賢明な人々がそこにいる可能性があります。
注:proc.communicate()
実際には xterm が完了すると呼び出しが返されますが、何らかの理由で poll メソッドが機能しません。