我想使用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)
好的,在询问IRC之后,他们指出了为什么它会这样运作.
第一个参数(arg0)通常是您正在执行的文件名(例如sys.argv [0]),因此第一个参数应该始终是文件名.
这解释了为什么参数不是可选的,在IRC上他们说arg0就是应用程序会认为它的名字.
| 归档时间: |
|
| 查看次数: |
17658 次 |
| 最近记录: |