我需要编写一个C程序来检查其他程序的输出。它应该基本上这样工作:
./ otherprogram | ./myprogram
但是我找不到如何从stdout(或管道)逐行读取。然后将所有这些写入stdout。
答案 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
}
}
然后你可以将任何程序的输出传递给它,逐行读取内容,对每行文本做一些事情。