没有args参数的os.execv

时间:2010-08-01 22:36:07

标签: python

我想用os.execv替换当前进程,除非你没有任何参数,否则这样可以正常工作。

即使我没有传递给我想要发布的进程的参数,我该如何调用它?

# Works fine, unless the arguments tuple wouldn't exist or be empty
os.execv('process.exe', ('arg1', 'arg2'))

3 个答案:

答案 0 :(得分:6)

这三种变体可以解决问题:

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)

os.exec* documentation on python.org

答案 1 :(得分:5)

好的,在询问了IRC后,他们指出了为什么会这样运作。

第一个参数(arg0)通常是你正在执行的文件名(例如sys.argv [0]),所以第一个参数应该始终是文件名。

这解释了为什么参数不是可选的,在IRC上他们说arg0就是应用程序会认为它的名字。

答案 2 :(得分:1)

这对我有用

os.execv('process',())

你确定你的process没有参数吗?

或尝试execl

os.execl('process')