7

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

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

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

4

2 回答 2

10

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

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

于 2012-11-18T12:13:16.240 回答
4

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

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

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

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

于 2012-11-18T12:12:41.360 回答