使用os.execlp时,为什么`python`需要`python`为argv [0]

Han*_*Sun 8 python unix linux operating-system

代码是这样的:

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

os.execlp('python', 'child.py', #other args#)  # this doesn't work
Run Code Online (Sandbox Code Playgroud)

我读了这个问题:python中的execlp()

但我仍然感到困惑.答案说:

第一个参数是要执行的程序(在PATH上找到).其余的是程序的sys.argv参数.

但是,如果我运行:python child.py 1 2 3并且sys.argv这个过程将是["child.py", "1", "2", "3"],那里python不存在.那我为什么要添加python第二个参数os.execlp呢?

Mar*_*ers 8

执行python时,它会sys.argv为您创建.该列表中的值基于操作系统传递给它的参数,但它包含sys.executable该列表中的值.

换句话说,当调用Python时,它会设置sys.argv除了它自己的可执行文件之外的所有内容.

当你调用一个新的可执行文件时os.execlp(),你仍然需要包含Python,因为这是操作系统将运行的可执行文件.os.execlp()无论你sys.argv以后发现什么,你传递给的东西的前两个值仍然是必需的.


yan*_*u90 5

第二个python是python的名称,可以是任何字符串,但必须在其中。

第二paragrphhttp://docs.python.org/3/library/os.html?highlight=os.exec#process-management