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

2024-06-20

代码是这样的:

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

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

我读过这个问题:python 中的 execlp() https://stackoverflow.com/questions/13439938/execlp-in-python

但我还是很困惑。答案说:

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

但是,如果我运行:python child.py 1 2 3sys.argv这个过程的["child.py", "1", "2", "3"],其中python不存在。那我为什么要加上python作为第二个参数os.execlp?


当python执行时,它会创建sys.argv为你。该列表中的值是based根据操作系统传递给它的参数,但它离开 the sys.executable该列表中的值。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用os.execlp时,为什么`python`需要`python`作为argv[0] 的相关文章

随机推荐