如何从C中读取stdout

时间:2014-06-13 21:30:00

标签: c pipe stdout

我需要编写一个C程序来检查其他程序的输出。它应该基本上这样工作:

./ otherprogram | ./myprogram

但是我找不到如何从stdout(或管道)逐行读取。然后将所有这些写入stdout。

2 个答案:

答案 0 :(得分:6)

一个节目的标准输出成为下一个节目的标准输出。刚从stdin读取,你会没事的。

shell运行myprogram时会为你连接所有内容。

顺便说一句,这是负责的bash代码: http://git.savannah.gnu.org/cgit/bash.git/tree/execute_cmd.c

寻找execute_pipeline。没有代码不容易遵循,但它完全解释了它。

答案 1 :(得分:2)

使用以下方法创建可执行文件:

#include <stdio.h>

int main()
{
   char line[BUFSIZ];
   while ( fgets(line, BUFSIZ, stdin) != NULL )
   {
      /* Do something with the line of text
   }
}

然后你可以将任何程序的输出传递给它,逐行读取内容,对每行文本做一些事情。