代码是这样的:
os.execlp('python', 'python', 'child.py', #other args#) # this works os.execlp('python', 'child.py', #other args#) # this doesn't work
但是我还是很困惑。答案说:
第一个参数是要执行的程序(位于PATH上)。其余的是程序的sys.argv参数。
但是,如果我运行:python child.py 1 2 3并且sys.argv此过程的将会是["child.py", "1", "2", "3"],其中python不存在。那为什么要添加python作为的第二个参数os.execlp呢?
python child.py 1 2 3
sys.argv
["child.py", "1", "2", "3"]
python
os.execlp
执行python时,它将sys.argv为您创建。该列表中的值是 基于 操作系统传递给它的参数的,但它 会sys.executable将该列表中的值 保留下来 。
sys.executable
换句话说,当调用Python时,它将设置sys.argv为 除其自己的可执行文件之外的所有内容 。
当通过调用 新的 可执行文件时os.execlp(),您仍然需要包含Python,因为这是操作系统将运行的可执行文件。os.execlp()无论sys.argv以后如何查找,仍然需要传递通行证的前两个值。
os.execlp()