我想在cpp中执行一个python文件,使其成为一个可以与我的其他子进程通信的进程。但是当我使用
execl("python3", "python3", "python/a1.py");
运行python文件,子进程立即返回,并且我的python文件中没有一行被执行。
但是当我尝试使用
system("python3 python/a1.py");
做同样的事情,它有效。
这是我的问题:
我只是不知道为什么它不能工作,因为我还使用execv加载另一个cpp可执行文件,并且它可以工作,当它进入python文件时,什么也没有发生。
更新: 删除不相关的问题,更正文件名
两个问题:
execl
不会检查 PATH
,因此您需要在第一个参数中指定 python3
二进制文件的路径,或者使用 execlp
而不是 execl
。(char *)NULL
哨兵。请注意,user4581301 的注释是错误的,实际上您需要指定
python3
两次才能执行相当于 system("python3 python/a1.py");
的操作,因为第一个用于执行文件,第二个用于 argv[0]
。