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

  • 姓名:郑楚杭
  • 学号:201821121009
  • 班级:计算1811

一、实验目的

掌握进程间通信管道的编程。

二、实验内容

  • 在服务器上用VIM编写一个程序:创建一个命名管道,创建两个进程分别对管道进行读fifo_read.c和写fifo_write.c。给出源代码
  • 给出运行结果,并分析

1. 编写程序

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

fifo_read.c

 

 

fifo_write.c

 

 

2. 分析运行结果

ps:运行两个终端,在一个终端运行fifo_read.c,另一个终端运行fifo_write.c

写端(在写端输入后下一行会显示写入的字符):

 读端(当写端输入后读端显示出写端写入的字符):

 

 

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

产生的问题

1.在两个终端分别运行了读程序和写程序,但是写端写入后读端无法显示写入的字符。

2.在open中的传入值O_RDONLY和O_WRONLY代表什么?

 

解答

1.通过阅读代码,发现创建管道的代码在fifo_read.c程序当中,而我在终端中运行程序时,先运行了fifo_write.c,即管道还未创建,从而导致了错误,先运行fifo_read.c创建了管道,再运行fifo_write后使读写能够正常进行。

2.经过查阅资料后知道了这些传入值代表管道模式,具体如下:

  O_RDONLY:读管道。

  O_WRONLY:写管道。

  O_RDWR:读写管道。

  O_NONBLOCK:非阻塞。

  O_CREAT:如果该文件不存在,就创建一个新的文件,并使用第3个参数为其设置权限。

  O_EXCL:测试文件是否存在。

posted on 2020-04-17 14:12  EzforNiko+  阅读(284)  评论(0编辑  收藏  举报

导航