操作系统第3次实验报告:管道
聂戴成
201821121012
计算1811
fifo_write.c
1 #include<stdio.h> 2 #include<unistd.h> 3 #include<errno.h> 4 #include<stdio.h> 5 #include<stdlib.h> 6 #include<string.h> 7 #include<sys/types.h> 8 #include<sys/stat.h> 9 #include<fcntl.h> 10 11 12 int main(){ 13 14 char s[]="Hello\n"; 15 int fd; 16 mkfifo("f",0777); 17 fd=open("f",O_WRONLY); 18 write(fd,s,sizeof(s)); 19 return 0; 2 24 }
fifo_read.c
1 #include<stdio.h> 2 #include<unistd.h> 3 #include<errno.h> 4 #include<stdio.h> 5 #include<stdlib.h> 6 #include<string.h> 7 #include<sys/types.h> 8 #include<sys/stat.h> 9 #include<fcntl.h> 10 11 int main(){ 12 char readbuffer[80]; 13 int fd; 14 fd=open("f",O_RDONLY); 15 read(fd,readbuffer,sizeof(readbuffer)); 16 printf("%s",readbuffer); 19 return 0; 20 21 }
运行结果:
先

进程阻塞
因为加入了O_WRONLY
所以进程会在另一个进程为读而打开管道之前一直阻塞
然后

读进程成功输出
同时写进程也被唤醒
疑问:
在无名管道时

cc是

而子进程

close明明在write前面,为什么cc先被输出,而后才是close
查阅资料,无法解决
询问老师,邮箱被封
等待个人邮箱解禁
不管了,先提交

浙公网安备 33010602011771号