|
|
- #include <stdio.h>
- #include <unistd.h>
- #include <string.h>
- main()
- {
- int a,lon=3;
- char pbuf[]="I am your father?";
- char cbuf[]="sun!";
- int files[2];
- if(pipe(files)==-1)
- {
- perror("Failed to creat pipe!");
- }
- a=fork();
- if(a>0)
- {
- write(files[1],pbuf,strlen(pbuf)+1);
- }
- else
- if(a==0)
- {
- sleep(2);
- printf("%s\n",pbuf);
- lon=read(files[0],cbuf,18);
- printf("%s\n",pbuf);
- }
- else
- {
- perror("Failed to creat a childpid!");
- }
- printf("pid:%d readBuffer is (%d){%s},writeBuffer is {%s}\n",getpid(),lon,cbuf,pbuf);
- return 1;
- }
复制代码
1.ubuntu下的结果:
naiad@artist:/home/programming/OperatingSystem$ ./pipeme
pid:26252 readBuffer is (3){sun!},writeBuffer is {I am your father?}
naiad@artist:/home/programming/OperatingSystem$ I am your father?
r?
pid:26253 readBuffer is (18){I am your},writeBuffer is {r?}
2.gentoo下的结果:
naiad@artist:/home/programming/OperatingSystem$ ./pipeme
pid:26252 readBuffer is (3){sun!},writeBuffer is {I am your father?}
naiad@artist:/home/programming/OperatingSystem$ I am your father?
r?
pid:26253 readBuffer is (18){I am your father?},writeBuffer is {?}
3.Fedora下的结果:
naiad@artist:/home/programming/OperatingSystem$ ./pipeme
pid:26252 readBuffer is (3){sun!},writeBuffer is {I am your father?}
naiad@artist:/home/programming/OperatingSystem$ I am your father?
r?
pid:26253 readBuffer is (18){I am your father?},writeBuffer is {your father?}
4.我的预测:
naiad@artist:/home/programming/OperatingSystem$ ./pipeme
pid:26252 readBuffer is (3){sun!},writeBuffer is {I am your father?}
naiad@artist:/home/programming/OperatingSystem$ I am your father?
I am your father?
pid:26253 readBuffer is (18){I am },writeBuffer is {I am your fahter?}
但是我预测的结果没有出来。请老师们指点。 |
|