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

Posted on 2020-04-16 18:25  LeeKYi  阅读(266)  评论(0编辑  收藏  举报

姓名:李冠毅  学号:201822121031  班级:计算1811

目录

一、实验目的

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

二、实验内容

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

三、实验报告

1. 编写程序

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

fifo_read.c的代码:

fifo_write.c的代码:

 

 

2. 分析运行结果

运行结果:

 

                     (左为写,右为读)

分析:

从第一个服务器终端复制一个出来,然后左边运行fifo_write.c,右边运行fifo_read.c。当左边write输入信息后给出输入成功提示,同时右边read读出左边write写入的信息。

管道模式:

  1)  O_RDONLY   :读管道

  2)  O_WRONLY  :写管道

  3)  O_RDWR      :读&写管道

  4)  O_EXCL        :测试文件存在否

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

疑问:

  fifo感觉很厉害,他有局限性吗?

解答:

  当然FIFO也有它的局限性。客户端可以发请求到服务器,但前提是要知道一个公共的FIFO通道,对于实现服务器回传应答到客户端的问题,可以通过为每一个客户端创建一个专用的FIFO,来实现回传应答。但也有不足,服务器会同时应答成千上万个客户端,创建如此多的FIFO是否会使系统负载过大,相应的如何判断客户端是否因意外而崩溃成为难题,或者客户端不读取应答直接退出,所以服务器必须处理SIGPIPE信号,并做相应处理。(www.baidu.com)