0

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

我该怎么办 ?

4

1 回答 1

3

在 Windows 上使用popen或(根据评论)_popen。基本上它作为 in 背后的东西|起作用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);
            }
    }
于 2012-06-08T22:44:18.830 回答