问题描述
- linux 管道 父进程写入管道的数据,其他进程没有处理怎么办?
-
#include
#includeint
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 worldn",12); //write data into pipe sleep(5); write(fd[1],"dengfangwenn",strlen("dengfangwenn")); } 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 timesn"); } exit(0);
}
程序运行如下:
hello world;
child thread exec one times
dengfangwen
请问第三条的dengfangwen是怎么打印出来的?
sleep(5);
write(fd[1],"dengfangwenn",strlen("dengfangwenn"));
向管道写dengfangwen的时候,子进程应该已经退出了;
解决方案
待着,不会消失,只有取出来后才会消失
时间: 2024-08-05 11:37:49