0

我有一个界面,用于在我的 solaris unix 中执行 mml 命令,如下所示:

> eaw 0004
<RLTYP; 
BSC SYSTEM TYPE DATA

GSYSTYPE
GSM1800

END
<

一旦我eaw <name>在命令行上执行此操作,它将启动一个界面,我可以在其中执行 mml 命令,并且我可以看到执行的这些命令的输出。

我的想法是在 C++ 中解析命令输出。我可以取消一些解析逻辑。但是从如何让命令在 c++ 中执行开始?有没有预定义的方法来做到这一点。这应该类似于在 c++ 中执行 sql 查询。但是我们使用其他库来执行 sql 查询。我也不想运行 shell 脚本或在其间创建临时文件。

我想要的是在 C++ 中执行命令并获取输出,甚至是 C++ 中的输出。谁能给我正确的方向?

4

2 回答 2

1

你有几个选择。从最简单和最简单到最难和最复杂的使用:

  • 使用system()调用生成 shell 来运行命令
  • 使用popen()调用生成一个子进程并写入其标准输入流或从其标准输出流中读取(但不能同时读取两者)
  • 使用pipe()fork()dup()/dup2()和的组合exec*()来生成子进程并为子进程的标准输入和输出设置管道。
于 2013-03-19T06:48:19.717 回答
0

下面的代码是用sh命令完成的。这将重定向stdout到一个名为“out”的文件,稍后可以读取该文件以处理输出。进程的每个命令都可以通过管道写入。

#include <stdio.h>
int main()
{
        FILE *fp;
        fp = popen("sh > out", "w");
        if (fp) {
                fprintf(fp, "date\n");
                fprintf(fp, "exit\n");
                fclose(fp);
        }
        return 0;
}
于 2013-03-19T06:58:48.293 回答