操作系统第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

查阅资料,无法解决

询问老师,邮箱被封

等待个人邮箱解禁

不管了,先提交

 

posted @ 2020-04-16 09:54  Dlementine  阅读(144)  评论(0)    收藏  举报