python中的execlp()

时间:2012-11-18 12:06:19

标签: python

我正在阅读Oreilly的Mark Luze编写的第4版编程python,通过自学。 有一个关于如何分叉子进程的例子,我不太明白:

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

在一个交互式shell(比如bash)中,我知道我可以输入python child.py #args#来让python解释器用args运行child.py. 为什么execlp()函数中有两个'python'?如果我在函数中只放了一个python,我会得到一个错误,抱怨无法找到文件或目录,这是child.py的第一个参数

2 个答案:

答案 0 :(得分:7)

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

第一个这样的参数是用于调用它的程序名称,以及OS进程列表中使用的显示值。它是python脚本中sys.argv[0]的值。

答案 1 :(得分:5)

首先,今天很少使用execlp。在大多数情况下,您可以使用subprocess模块,如下所示:

subprocess.call(['python', 'child.py'])

execlp的第一个参数是您要执行的文件。

后面的参数构成了该程序的参数数组(Python中的sys.argv)。第一个参数是程序调用的名称。例如,如果使用'-c'选项运行程序,Python会将名称设置为-c。同样,grep的行为会有所不同,具体取决于第一个参数,因此用户可以执行rgrep来暗示grep -r