开发者社区> 问答> 正文

linux 管道 父进程写入管道的数据,其他进程没有处理怎么办?

#include
#include
int
main(void)
{
int n;
char line[MAXLINE];
int fd[2];
pid_t pid;
//create the pipe
if(pipe(fd)<0)   
    err_sys("pipe error!");

if((pid = fork()) < 0 ){
    err_sys("fork error");
} else if (pid >0 ){         //parent
    close(fd[0]);            //close fd[0] read 
    sleep(5);
    write(fd[1],"hello world\n",12);    //write data into pipe
    sleep(5);
    write(fd[1],"dengfangwen\n\0",strlen("dengfangwen\n\0"));

} else {                //child 
    close(fd[1]);//close fd[1]  write 
    n = read(fd[0],line ,MAXLINE);     //get data from pipe
    write(STDOUT_FILENO, line ,n);
    printf("child  thread exec one times\n");
}
exit(0);
}

程序运行如下:

hello world;
child thread exec one times
dengfangwen
请问第三条的dengfangwen是怎么打印出来的?

sleep(5);
write(fd[1],"dengfangwenn0",strlen("dengfangwenn0"));

向管道写dengfangwen的时候,子进程应该已经退出了;

展开
收起
杨冬芳 2016-07-13 14:37:10 2154 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载