操作系统第三次实验报告:管道

Posted on 2020-04-18 11:20  wrenyan  阅读(193)  评论(0编辑  收藏  举报

 

操作系统第三次实验报告:管道

  • 姓名 张波
  • 学号 201821121027
  • 班级 计算1911

 

1. 编写程序

在服务器上用Vim编写程序:创建一个命名管道,创建两个进程分别对管道进行读fifi_read.c和写fifo_write.c。给出源代码。

fifi_read.c(打错fifo成fifi将就)

 

fifo_write.c

2. 分析运行结果

写端fifo_write.c

 

读端fifi_read.c

 

 

分析:在运行时需同时开启两个终端,并且先运行read程序,如果先运行write程序会显示Fail to open,只有两端同时运行才能建立连接。

3. 通过该实验产生新的疑问及解答

命名管道创建完成后就可以使用,其使用方法与管道一样;
区别在于:
(1)命名管道使用之前需要使用open()打开。这是因为:命名管道是设备文件,它是存储在硬盘上的,而管道是存在内存中的特殊文件。
(2)但是需要注意的是,命名管道调用open()打开有可能会阻塞,但是如果以读写方式(O_RDWR)打开则一定不会阻塞;
(3)命名管道以只读(O_RDONLY)方式打开时,调用open()的函数会被阻塞直到有数据可读;
(4)命名管道如果以只写方式(O_WRONLY)打开时同样也会被阻塞,知道有以读方式打开该管道。