让我们说cmd1在stdout上打印一些东西。如何在C中使用cmd1捕获它,以便cmd1 | cmd2有效。
即
cmd1{
fprintf(stdout, "Hello");
}
cmd2 : should take "hello" and only print "hel".
答案 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程序中的缓冲区。 (这取决于许多事情......但试试吧。)