7

私は自分自身を教えて、OreillyのMarkLuzeによるプログラミングpython第4版を読んでいました。子プロセスをフォークする方法の例がありますが、私にはよくわかりません。

os.execlp('python', 'python', 'child.py', #other args#)

python child.py #args#インタラクティブシェル(bashなど)では、 Pythonインタープリターにargsを使用してchild.pyを実行するように入力するように入力できることを知っています。execlp()関数に2つの「python」があるのはなぜですか?関数にPythonを1つだけ入れると、child.pyの最初の引数であるファイルまたはディレクトリが見つからないというエラーが表示されます。

4

2 に答える 2

10

最初の引数は、実行するプログラムです(にありますPATH)。残りはsys.argvプログラムへの引数です。

そのような最初の引数は、それを呼び出すために使用されるプログラム名と、OSプロセスリストで使用される表示値です。これは、sys.argv[0]Pythonスクリプトのの値です。

于 2012-11-18T12:13:16.240 に答える
4

まず第一に、execlp今日はめったに使用されません。ほとんどの場合、次のようにサブプロセスモジュールを使用します。

subprocess.call(['python', 'child.py'])

の最初の引数execlpは、実行するファイルです。

後者の引数は、そのプログラムへの引数配列を形成します(sys.argvPythonの場合)。最初の引数は、プログラムが呼び出されたときの名前です。たとえば、Pythonは'-c'、プログラムが-cオプションを指定して実行されている場合に名前を設定します。同様に、grepは最初の引数に応じて動作が異なるため、ユーザーはrgrepを暗黙的に実行できgrep -rます。

于 2012-11-18T12:12:41.360 に答える