当使用os.execlp时,为什么`python`需要`python`作为argv

代码是这样的:

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

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

但我仍然困惑。 答案是:

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

但是,如果我运行: python child.py 1 2 3并且此进程的sys.argv将是["child.py", "1", "2", "3"] ,其中python不存在。 那么为什么我应该添加python作为os.execlp的第二个参数呢?

Solutions Collecting From Web of "当使用os.execlp时,为什么`python`需要`python`作为argv"

当python被执行时,它会为你创建sys.argv 。 该列表中的值基于操作系统传递给它的参数,但是会从该列表中sys.executable值。

换句话说,当Python被调用时,它将sys.argv设置为一切, 但它自己的可执行文件

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

第二个python是python的名字,它可以是任何字符串,但它必须在那里。

查看http://docs.python.org/3/library/os.html?highlight=os.exec#process-management的第二个paragrph