#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的时候,子进程应该已经退出了;
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。