姓名:李冠毅 学号: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)