我在“编程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,不是吗?
答案 0 :(得分:0)
第一个python
是要运行的可执行文件的名称,第二个是argv[0]
的值。
答案 1 :(得分:0)
这是它的名字,这就是为什么它可以是任何字符串。
请参阅http://docs.python.org/3/library/os.html?highlight=os.exec#process-management
文档结构不合理,人们可能会忽略第二段,因为他们直接跳到os.exec *上面的思考内容是不相关的。