pythonからCの実行ファイルを実行。でも・・・
研究用に、先生のCのプログラムをpythonでパラメータを変化させながら実行しています。
長時間になるため、命令の最後に「&」をつけてバックグラウンド処理にしたいのですが、どうもうまくいかない。
例えば、こんな感じ。
$ python hoge.py &
通常、こうすればバックグラウンド処理になって、サーバとの接続を切っても問題ないのだけど、今回はこれでは不十分らしい。
なんとなくだが、このpythonプログラムの中の、Cを実行させている部分がいけないような気がする。
外部コマンドを利用する際は、commandsモジュールというものを使うとPythonスクリプト内で、Unixコマンドの戻り値を得るには : 渡米生活。では言っている。os.system()というのもあるみたいだが、今回は戻り値がほしいのでcommands.getoutput()を使用。
全部バックグラウンド処理にしないとダメなんじゃないかと思い、シコウサクゴで
res = commands.getoutput("./foo &")
とやってみると、エラーになった。psコマンドで見てみると、外部コマンドを実行する際は
sh -c { ./foo &;}
という風になるらしく、セミコロンの前に「&」が置かれることを嫌うらしい。
これって解決できないのかな?