私はPythonのサブプロセスモジュールを使って別のプログラムを起動しています。プログラムには引数 '-c {0-7}'が必要です。 C++プログラムでPythonのサブプロセスPopenがシェルにすべての引数を送信しない
this_dir = os.path.dirname(os.path.abspath(__file__))
cmd = [os.path.join(this_dir,'foobar'),'-c%d' % channel]
print "Starting process: %s" % str(cmd)
Proc = subprocess.Popen(cmd,stdout=subprocess.PIPE,shell=True)
、私は、渡された引数をチェックしている:私はPythonスクリプトを実行したときにここで
for (int i = 0; i < argc; i++)
{
cerr << i << " " << argv[i] << endl;
}
cerr << "" << endl;
が出力されます。
[email protected]:~/embedded_pqa/saleae$ ./foobar.py -c3
Starting process: ['/home/user/code/foobar', '-c3']
0 /home/user/code/foobar
明らかなように、引数 '-c3'はサブプロセスに渡されていません。何かご意見は?
'strace'や' truss'のようなツールは 'execve'システムコールに実際に渡されているかどうかを確認するのに適しています。また、 'shell = True'は悪です。引数の受け渡し方法を制御したい場合は、使用しないでください。 –