小编Mmc*_*ser的帖子

cat 什么时候完成从管道中读取的内容?

鉴于以下代码,为什么 cat 只在我输入\nCTRL+后打印管道的内容D?cat 实际打印它读取的内容的条件是什么?

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(void){
    int pid,p[2];
    char ch;
    pipe(p);
    if((pid=fork()) == -1){
        fprintf(stderr,"Error:can't create a child!\n");
        exit(2);
    }
    if(pid){
        close(p[0]);
        while((ch=getchar())!=EOF){
            write(p[1],&ch,1);
        }
        close(p[1]);
        wait(0);
    }else{
        close(p[1]);
        close(0);
        dup(p[0]);
        close(p[0]);
        execlp("cat","cat",NULL);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c pipe input cat

5
推荐指数
1
解决办法
1044
查看次数

标签 统计

c ×1

cat ×1

input ×1

pipe ×1