将另一个命令行程序的输出加载到我的

时间:2012-06-08 22:41:34

标签: c++ command-line input

好吧假设我有一个程序(在windows中.exe文件),当我运行它时,它会输出一些信息......现在我正在编写另一个程序(用c ++编写),我需要它自动运行它。 exe文件并读取输出,以便它可以处理该信息以进行进一步的操作......

我该怎么办?

1 个答案:

答案 0 :(得分:3)

使用popen或在Windows上(每条评论)_popen。基本上它在|中作为some program | thing背后的东西。

通常情况下,我反对发布完整的代码,但我今天真的写了这个,并且手头有它,所以,你走了。根据我的理解,C ++没有替换popen伟大的接口,但是如果您在该层引入了boost库或其他东西,那么就有解决方案。

注意我使用char[10]因为在我的应用程序中我知道输出会很短。

   PopenWrapper(const std::string& command) {

            fd = popen(command.c_str(), "r");
            if(fd == NULL) {
                    throw PopenException("Failed to open command: " + command);
            }
    }

    std::string get() {
            char line[10];
            fgets(line, sizeof(line), fd);
            return std::string(line);
    }

    ~PopenWrapper() {
            if(fd != NULL) {
                    pclose(fd);
            }
    }