从C中的函数捕获结果(cmd1 | cmd2)

时间:2011-03-03 03:42:08

标签: c

让我们说cmd1在stdout上打印一些东西。如何在C中使用cmd1捕获它,以便cmd1 | cmd2有效。

cmd1{
    fprintf(stdout, "Hello");
    }

cmd2 : should take "hello" and only print "hel".

2 个答案:

答案 0 :(得分:2)

要启用管道操作,cmd2应从stdin读取。

例如,由于fgets()stdin读取,您可以执行以下操作:

#include <stdio.h>

int main() {
    char buf[1024];
    while (fgets(buf, sizeof(buf), stdin)) {
        printf("%.*s\n", 3, buf);
    }
    return 0;
}

答案 1 :(得分:0)

stdout如何与其他程序交互与C无关 - 这是操作系统。但是,在每个操作系统上我都使用了

 cmd1 | cmd2

将cmd1的stdout发送到cmd2的stdin。

如果这不起作用,那么你可能需要刷新cmd1程序中的缓冲区。 (这取决于许多事情......但试试吧。)