Python 不带args参数的os.execv
我想用一个新的进程替换当前进程,使用os.execv,除非您没有任何参数,否则它可以正常工作 即使我没有要传递给要启动的进程的参数,我如何调用它Python 不带args参数的os.execv,python,Python,我想用一个新的进程替换当前进程,使用os.execv,除非您没有任何参数,否则它可以正常工作 即使我没有要传递给要启动的进程的参数,我如何调用它 # Works fine, unless the arguments tuple wouldn't exist or be empty os.execv('process.exe', ('arg1', 'arg2')) 这对我有用 os.execv('process',()) 您确定您的流程在没有参数的情况下工作吗 或者试试Exel os.exec
# Works fine, unless the arguments tuple wouldn't exist or be empty
os.execv('process.exe', ('arg1', 'arg2'))
这对我有用
os.execv('process',())
您确定您的流程
在没有参数的情况下工作吗
或者试试Exel
os.execl('process')
好的,在问了IRC之后,他们指出了为什么它是这样工作的 第一个参数(arg0)通常是您正在执行的文件名(例如sys.argv[0]),因此第一个参数应该始终是文件名
这解释了为什么参数不是可选的,在IRC上,他们说arg0是应用程序认为它的名称。这三个变量可以解决问题:
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)
这将给出一个错误,即元组对我来说是空的(在python 2.7中),是的,我知道它在没有参数的情况下工作,它是一个py2exe包。我使用的是2.5,所以这可能是问题所在。你试过execl()吗?很奇怪,2.7与2.5的表现如此不同,可能是操作系统的不同,你似乎在运行Windows,我在Linux上进行了测试。这确实是一个版本问题,我刚刚在Linux上编译了2.7,它的表现与你提到的一样。虽然os.execv('process',[''])在Linux上可以工作,但在Windows上它会使解释器崩溃,我设法让它与os.execv一起工作(“C:\Windows\system32\calc.exe”,“x”])这是正确答案,索引0处的参数是程序名