0

私が知る限り、execv は現在のプロセスを追い越し、呼び出された実行可能ファイルが終了すると、プログラムは終了します。同じスクリプト内で execv を複数回呼び出したいのですが、このため、実行できません。

現在のプロセス内で実行され (つまり、同じ stdout に出力され)、プログラムを終了しない execv の代替手段はありますか? もしそうなら、それは何ですか?

4

2 に答える 2

1

はい、使用しますsubprocess
os.execv*ドキュメントから、あなたのタスクには適切ではありません:

これらの関数はすべて新しいプログラムを実行し、現在のプロセスを置き換えます。彼らは戻りません。Unix では、新しい実行可能ファイルが現在のプロセスにロードされ、呼び出し元と同じプロセス ID を持ちます。

したがって、外部の exe を同じ出力に出力したい場合は、次のようにします。

import subprocess
output = subprocess.check_output(['your_exe', 'arg1'])

デフォルトでは、check_output()標準出力に書き込まれた出力のみを返します。標準出力とエラーの両方を収集する場合は、stderr引数を使用します。

output = subprocess.check_output(['your_exe', 'arg1'], stderr=subprocess.STDOUT)
于 2014-08-18T02:30:15.713 に答える
0

stdlibのsubprocessモジュールは、プロセスを作成する最良の方法です。

于 2014-08-18T02:15:29.790 に答える