为什么在使用 execl() 时会出现 "execv(file, args)" 错误?
Why am I getting an "execv(file, args)" error when using execl()?
我正在尝试使用 execl() 来执行一个新程序,但它一直返回一个 execv() 错误,指出 arg2 不能为空。
if pid == 0:
print("This is a child process")
print("Using exec to another program")
os.execl("example_prg_02.py")
为什么使用execl()会出现这种情况? execl() 也需要参数吗?
"example_prg_02.py"
不是可执行文件的路径,您必须指定
- 可执行文件的路径作为第一个参数,
- 第二个可执行文件的名称,
- 第 3 个参数(第 4、5、...)
所以不是你的
os.execl("example_prg_02.py")
使用
os.execl(sys.executable, "python", "example_prg_02.py")
(当然是第一个 import sys
)。
sys.executable
是 Python 解释器的可执行二进制文件的绝对路径。
附录(来自我的评论):
Why error from execv()
, when I used execl()
?
execv()
和 execl()
做同样的事情,它们在传递命令行参数的方式上有所不同:
如果最后一个字母是 v(v参数数量可变),您必须提供 list or tuple for argv (i.e. arguments),
如果最后一个字母是l(大概意思是list them — 对于 常量 个数),您必须提供 argv 作为 单个参数 .
execl()
只是一个“语法糖”——它在内部调用execv()
,所以你得到了execv()
的错误。
我正在尝试使用 execl() 来执行一个新程序,但它一直返回一个 execv() 错误,指出 arg2 不能为空。
if pid == 0:
print("This is a child process")
print("Using exec to another program")
os.execl("example_prg_02.py")
为什么使用execl()会出现这种情况? execl() 也需要参数吗?
"example_prg_02.py"
不是可执行文件的路径,您必须指定
- 可执行文件的路径作为第一个参数,
- 第二个可执行文件的名称,
- 第 3 个参数(第 4、5、...)
所以不是你的
os.execl("example_prg_02.py")
使用
os.execl(sys.executable, "python", "example_prg_02.py")
(当然是第一个 import sys
)。
sys.executable
是 Python 解释器的可执行二进制文件的绝对路径。
附录(来自我的评论):
Why error from
execv()
, when I usedexecl()
?
execv()
和 execl()
做同样的事情,它们在传递命令行参数的方式上有所不同:
如果最后一个字母是 v(v参数数量可变),您必须提供 list or tuple for argv (i.e. arguments),
如果最后一个字母是l(大概意思是list them — 对于 常量 个数),您必须提供 argv 作为 单个参数 .
execl()
只是一个“语法糖”——它在内部调用execv()
,所以你得到了execv()
的错误。