在c++中执行并接收MML命令的输出
execute and receive the output of mml command in c++
我有一个在solaris Unix中执行MML命令的接口,如下所示:
> eaw 0004
<RLTYP;
BSC SYSTEM TYPE DATA
GSYSTYPE
GSM1800
END
<
只要我在命令行上执行eaw <name>
。它将启动一个接口,在其中我可以执行mml命令,我可以看到这些命令执行的输出。
我的想法是解析c++中的命令输出。我可以省去一些解析的逻辑。但是从如何在c++中执行命令开始呢?有什么预先定义好的方法来做这个吗?这应该类似于在c++中执行sql查询。但是我们使用其他库来执行sql查询。我也不想在两者之间运行shell脚本或创建临时文件。
我想要的是在c++中执行命令并获得输出,甚至在c++中也是如此。有人能告诉我正确的方向吗?
您有几个选择。从最容易和最简单到最难和最复杂的使用:
- 使用
system()
调用生成一个shell来运行命令 - 使用
popen()
调用生成一个子进程,要么写入其标准输入流,要么从其标准输出流读取(但不能同时读取) - 使用
pipe()
,fork()
,dup()
/dup2()
和exec*()
的组合来生成子进程,并为子进程的标准输入和输出设置管道。
下面的代码是用sh
命令完成的。这将stdout
重定向到一个名为"out"的文件,稍后可以读取该文件以处理输出。每个给进程的命令都可以通过管道写入。
#include <stdio.h>
int main()
{
FILE *fp;
fp = popen("sh > out", "w");
if (fp) {
fprintf(fp, "daten");
fprintf(fp, "exitn");
fclose(fp);
}
return 0;
}
相关文章:
- 从命令行c++发送文本文件名
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 使用QProcess执行命令,并将结果存储在QStringList中
- 数组长度,为什么从命令行获取时不能使用它?
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- clang整洁10忽略了我的NOLINT命令
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 使用VS Code和CMake Tools运行自定义命令
- 如何使用ESP8266向谷歌主页发送命令
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 通过 Openssl 命令行加密,通过 c++ 解密
- CMake "--target install"无需"--build"命令行
- Gstreamer 管道从命令 lne 到 c 代码
- 自动"yes"到 Popen SSH 命令
- 在c++中执行并接收MML命令的输出