不带args argumen的os.execv

2024-09-28 23:30:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用os.execv将当前进程替换为一个新进程,除非您没有任何参数,否则此操作正常。

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

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

Tags: orthe参数进程osbeargumentsempty
3条回答

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

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

好吧,在询问了IRC之后,他们指出了为什么会这样。

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

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

这对我有用

os.execv('process',())

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

或者试试execl

os.execl('process')

相关问题 更多 >