在C ++程序中操作“系统”调用的结果

时间:2012-02-12 04:28:54

标签: c++ linux shell console

假设我执行一些命令在C ++程序中的终端中运行。例如:

int main(){
std::system("./myprog");
return 0;
}

假设myprog产生一些打印到控制台的输出。我可以在C ++程序中使用此输出吗?例如:

int main(){
some_var = std::system("./myprog");

if (some_var == "something")
  // Do something.

return 0;
}

非常感谢任何帮助。再次感谢。

1 个答案:

答案 0 :(得分:3)

您需要使用popen功能:

FILE *fp = popen("./myprog", "r");

char buffer[128];
while (fgets(buffer, sizeof(buffer), fp))
{
    std::cout << "Output from program: " << buffer << '\n';
}

pclose(fp);