gpt4 book ai didi

c++ - 从 popen 执行命令 shell 并设置其他命令 shell

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:33:35 25 4
gpt4 key购买 nike

我正在从事一个使用四旋翼飞行器和 mavlink 的项目。我已经在我的 Ubuntu PC 上成功安装了 mavproxy,并且在终端上运行它没有问题。当我从终端运行 mavproxy.py 并连接支持 mavlink(APM 自动驾驶仪)的四旋翼飞行器时,mavproxy 检测到四旋翼飞行器并且一切正常。

当您执行 mavproxy.py 时,终端中的程序开始发送和接收多个参数。您可以在终端中写入一些参数以访问任何配置。例如,终端中的命令help:

$ mavlink.py
.
.data beging
.
STABILIZE> "when the program finish the configuration, allowed to you for doing an input any parameter, for example help"

STABILIZE>help
show all helps.

我有一个代码可以从 C++ 执行 mavlink.py

include <iostream>
include <stdio.h>

using namespace std;

int main() {
FILE *in;
char buff[512];

if(!(in = popen("mavlink.py", "r"))){
return 1;
}

while(fgets(buff, sizeof(buff), in)!=NULL){
cout << buff;
}
pclose(in);

return 0;
}

当我运行此 C++ 程序时,终端显示的内容与我从终端运行 mavproxy.py 时显示的内容相同,但我不知道如何发送命令,例如C++ 代码中的帮助

如果您阅读程序,while 语句允许我捕获从程序 mavproxy.pycout 中生成的参数终端,但是 mavlink.py 永远不会结束,直到您在终端导出写入内容或按 CTRL + C 所以 while 循环永远不会结束。

我一直在阅读 Popen 函数,但我还没有找到执行此操作的正确形式。

我知道我可以在我的程序中使用 mavlink.h 库并将参数发送到四旋翼飞行器,但不想用 mavlink.h 执行此操作。

最佳答案

我不确定我是否理解您的问题,但我认为您想向 mavlink.py 发送命令并读取其输出。

如果是这种情况,您必须将 popen() 的打开模式从“r”更改为“w”,这样您可以写,然后你可以像这样向它发送命令:

FILE *fp;
char *command="HELP";

if(!(fp = popen("mavlink.py", "w"))){
return 1;

fwrite(command, sizeof(char), strlen(command), fp);

关于c++ - 从 popen 执行命令 shell 并设置其他命令 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23302849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com