提问人:Brian 提问时间:10/25/2023 最后编辑:Brian 更新时间:10/27/2023 访问量:50
在cpp中执行python文件
Execute python file in cpp
问:
我想在 cpp 中执行一个 python 文件,使其成为可以与我的另一个子进程通信的进程。但是当我使用
execl("python3", "python3", "python/a1.py");
要运行 Python 文件,子进程会立即返回,并且不会执行我的 Python 文件中的任何一行。
但是当我尝试使用
system("python3 python/a1.py");
做同样的事情,它有效。
这是我的问题:
- 我真的很想知道为什么第一种方法不起作用
我只是不知道为什么它不能工作,因为我还使用 execv 加载另一个 cpp 可执行文件,它可以工作,当它转到 python 文件时,什么也没发生。
更新: 删除不相关的问题,更正文件名
答:
0赞
Joseph Sible-Reinstate Monica
10/27/2023
#1
两个问题:
execl
不检查 ,因此您需要在第一个参数中指定二进制文件的路径,或者使用 代替 .PATH
python3
execlp
execl
- 您缺少结束参数列表的哨兵。
(char *)NULL
请注意,user4581301 的注释是错误的,您实际上需要指定两次才能执行等效的 ,因为第一个是用于执行的文件,第二个是用于 。python3
system("python3 python/a1.py");
argv[0]
评论
execl("python3", "python3", "python/a1.py");
看起来你想运行一个程序,就好像命令行是 一样。即使忽略 python 脚本名称的差异,这与确实有效的命令也明显不同。首先丢弃其中一个参数,看看会发生什么。python3 python3 python/a1.py
python3 python/ece650-a1.py
"python3"
execl