python中os.exec *中的重复args

时间:2013-08-31 18:30:22

标签: python

我在“编程Python:

”一书中看到了这些代码
import os

parm = 0
while True:
    parm += 1
    pid = os.fork()
    if pid == 0:                                             # copy process
        os.execlp('python', 'python', 'child.py', str(parm)) # overlay program
        assert False, 'error starting program'               # shouldn't return
    else:
        print('Child is', pid)
        if input() == 'q': break

为什么os.execlp中有两个蟒蛇?似乎第二个可以是任何字符串。第二个论点是做什么的?

编辑:在阅读可能重复的问题后,我仍然不明白。这是child.py:

import os, sys
print('Hello from child', os.getpid(), sys.argv[1])

所以argv[1]str(parm)argv[0]是child.py,不是吗?

2 个答案:

答案 0 :(得分:0)

第一个python是要运行的可执行文件的名称,第二个是argv[0]的值。

答案 1 :(得分:0)

这是它的名字,这就是为什么它可以是任何字符串。

请参阅http://docs.python.org/3/library/os.html?highlight=os.exec#process-management

文档结构不合理,人们可能会忽略第二段,因为他们直接跳到o​​s.exec *上面的思考内容是不相关的。