popen でコマンドを実行しても結果が安定しない

なんでだろうと思っていたら f.close()してやる前に wait を置いてやる必要があるらしい。システムの状況によって、応答がある前に close してしまって失敗するってことかな。python 側で待ってくれたりはしないらしい。popen は file だからしかたないか。
対話型セッションでステップ実行すると成功するのに、スクリプト実行だと失敗する。起動するコマンドが違うと確実に成功するものもある。対話型でもコピペで実行すると結果が不安定になる。それでようやく気がついた... orz
実行のしかたやパーミッションが普通ではない方法だったので、そっちに気が取られていたけど、原因は基本的な事だった。ヘタレの本領発揮だな...
time.sleep()を入れて安定する。
重いプロセスでは、早く close してしまうとゾンビプロセスが残ってしまうので、マージンは多めに取ったほうがいい感じだ。
# PerlRubyではこんな経験あまりないのだけど、やっぱ file オブジェクトだからだろうなぁ...