Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 不带args参数的os.execv_Python - Fatal编程技术网

Python 不带args参数的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

我想用一个新的进程替换当前进程,使用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.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处的参数是程序名