R S*_*R S 9 python exec command-line-arguments
从python文档:
各种exec*()函数获取加载到进程中的新程序的参数列表.在每种情况下,这些参数中的第一个作为自己的名称传递给新程序,而不是作为用户在命令行上键入的参数.对于C程序员来说,这是传递给程序main()的argv [0].例如,os.execv('/ bin/echo',['foo','bar'])只会在标准输出上打印条形图; foo似乎会被忽略.
有人可以帮我理解这个吗?如果我想用一些参数运行我自己的程序,我该怎么办?
pax*_*blo 18
UNIX,所有这些exec东西都来自于,将程序可执行文件与程序名称分开,以便您的进程可以具有任意名称.
第一个参数是将运行的程序.这必须存在.下一个参数是运行程序的进程将被调用,将argv[0]进入的内容以及ps(进程列表)输出中出现的内容.
所以,如果我这样做(在C中,但它也映射到Python):
execl ("/usr/bin/sleep", "notsleep", "60", NULL);
Run Code Online (Sandbox Code Playgroud)
这将运行该程序,/usr/bin/sleep但它将在进程列表中显示为notsleep.argv[0]将notsleep和argv[1](实际参数)将是60.通常,前两个参数将是相同的,但它绝不是必需的.
这就是为什么你列出的第一个参数(似乎)被忽略了.它是给进程的名称,而不是它的第一个参数.
更正确的方法是:
os.execv('/bin/echo', ['echo', 'foo', 'bar'])
Run Code Online (Sandbox Code Playgroud)