我想用一个新的os.execv替换当前进程,这个工作正常,除非你没有任何参数。没有args参数的os.execv
即使我没有参数传递到我想要启动的进程,我该如何调用该函数?
# Works fine, unless the arguments tuple wouldn't exist or be empty
os.execv('process.exe', ('arg1', 'arg2'))
我想用一个新的os.execv替换当前进程,这个工作正常,除非你没有任何参数。没有args参数的os.execv
即使我没有参数传递到我想要启动的进程,我该如何调用该函数?
# Works fine, unless the arguments tuple wouldn't exist or be empty
os.execv('process.exe', ('arg1', 'arg2'))
好吧,要求在IRC之后他们指出,为什么是这样工作的。
第一个参数(arg0)通常是你正在执行的文件名(例如sys.argv [0]),所以第一个参数应该总是文件名。
这解释了为什么参数不是可选的,在IRC上他们说arg0是应用程序认为它的名字是什么。
这对我的作品
os.execv('process',())
。您确定要process
不带参数的工作?
或者尝试EXECL
os.execl('process')
这三个变体可以解决问题:
cmd = '/usr/bin/vi'
os.execv(cmd, ('',))
os.execv(cmd, [''])
os.execl(cmd, '')
一般一个参数列表(sys.argv中)的第一个参数是已经用于调用应用程序的命令。 因此,最好是使用那些之一:
cmd = '/usr/bin/vi'
os.execv(cmd, (cmd,))
os.execv(cmd, [cmd])
os.execl(cmd, cmd)
这是一个正确的答案,索引0处的参数是程序的名称 – 2014-11-07 12:25:08
这将会给一个错误的元组是空的,我(在Python 2.7版),是的,我知道它不带参数,它是一个py2exe软件包。 – 2010-08-02 09:38:49
我使用2.5以便可能是问题。你用execl()试过了吗? – 2010-08-02 09:58:23
似乎execl在幕后使用execv:http://pastebin.com/W1YKpxe7 – 2010-08-03 12:48:41