好吧假设我有一个程序(在windows中.exe文件),当我运行它时,它会输出一些信息......现在我正在编写另一个程序(用c ++编写),我需要它自动运行它。 exe文件并读取输出,以便它可以处理该信息以进行进一步的操作......
我该怎么办?
答案 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);
}
}