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

从C中的函数捕获结果(cmd1 | cmd2),c,C,让我们假设cmd1在标准输出上打印某些内容。如何使用C中的cmd1捕获它,以使cmd1 | cmd2工作 i、 e 要启用管道操作,cmd2应读取stdin 例如,由于fgets()读取stdin,因此可以执行以下操作: #include <stdio.h> int main() { char buf[1024]; while (fgets(buf, sizeof(buf), stdin)) { printf("%.*s\n", 3, buf);

让我们假设cmd1在标准输出上打印某些内容。如何使用C中的cmd1捕获它,以使cmd1 | cmd2工作

i、 e


要启用管道操作,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;
}
#包括
int main(){
char-buf[1024];
while(fgets(buf、sizeof(buf)、stdin)){
printf(“%s\n”,3,buf);
}
返回0;
}

标准输出如何与另一个程序交互与C无关——这是操作系统。然而,在我使用过的每一个操作系统上,输入

 cmd1 | cmd2
将cmd1的stdout发送到cmd2的stdin


如果这不起作用,则可能必须刷新cmd1程序中的缓冲区。(这取决于很多事情……但请尝试一下。)

cmd1和cmd2函数是在同一个程序中,还是在命令行程序中?如果输出在多行上,那么:line1:hello,line2:hello,line3:hello。我只想打印前两行,但都是“hel”,这听起来像是一个不同的问题。我的回答满足这个问题吗?
 cmd1 | cmd2