操作系统第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) 编辑 收藏 举报