通过管道从外部应用程序读取stdout而不会阻塞

时间:2015-03-19 22:37:48

标签: c++ c linux pipe

我正在尝试读取stdout而不等待进程结束。我试过this,但这对我不起作用。这是我的实际功能代码

void startShowingStdout(FILE* pipe)
{
   char buffer = 0;
   struct termios old_tio, new_tio;
   tcgetattr(fileno(pipe),&old_tio);
   new_tio=old_tio;
   new_tio.c_lflag &=(~ICANON & ~ECHO);
   tcsetattr(fileno(pipe),TCSANOW,&new_tio);

   while((buffer = getc(pipe)) != EOF) std::cout << buffer << std::flush;
   tcsetattr(fileno(pipe),TCSANOW,&old_tio);
}

在此版本中,stdout在程序结束后出现。是否有可能在退出前捕获标准输出?

0 个答案:

没有答案