我想用os.execv替换当前进程,除非你没有任何参数,否则这样可以正常工作。
即使我没有传递给我想要发布的进程的参数,我该如何调用它?
# Works fine, unless the arguments tuple wouldn't exist or be empty
os.execv('process.exe', ('arg1', 'arg2'))
答案 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)
答案 1 :(得分:5)
好的,在询问了IRC后,他们指出了为什么会这样运作。
第一个参数(arg0)通常是你正在执行的文件名(例如sys.argv [0]),所以第一个参数应该始终是文件名。
这解释了为什么参数不是可选的,在IRC上他们说arg0就是应用程序会认为它的名字。
答案 2 :(得分:1)
这对我有用
os.execv('process',())
你确定你的process
没有参数吗?
或尝试execl
os.execl('process')