没有args参数的os.execv

Not*_*ble 6 python

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

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

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

pho*_*bie 10

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

cmd = '/usr/bin/vi'
os.execv(cmd, ('',))
os.execv(cmd, [''])
os.execl(cmd, '')
Run Code Online (Sandbox Code Playgroud)

通常,参数列表(sys.argv)的第一个参数是用于调用应用程序的命令.所以最好使用其中一个:

cmd = '/usr/bin/vi'
os.execv(cmd, (cmd,))
os.execv(cmd, [cmd])
os.execl(cmd, cmd)
Run Code Online (Sandbox Code Playgroud)

python.org上的os.exec*文档


Not*_*ble 5

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

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

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