【要求】所有练习题保留题目要求,在题目要求后面作答:
u 代码要求有注释,代码中适当标注关键代码为红色。
u 要有运行结果的截图。
u 每题最后应该有对程序的适当分析和总结!
u 注意格式排版,内容分析注意列条目,展开清楚地阐述。
- 改写课本例题,分别利用匿名管道与命名管道(文件命名为自己名字全称)实现父子进程间通信和非亲缘关系的两个进程通信,发送的消息为i am your name。注意:重点是对管道通信给出各种同步、阻塞情况的分析说明。
匿名管道:
Buf[r]=0是在最后加入结束标志。
分析:父亲连接管道的读端,孩子连接写端,一开始孩子sleep,无法写入,因此父亲阻塞。
分析:当孩子sleep完写入,父亲才可继续读出。
命名管道:
读管道:
写管道:
分析:命名管道需要建一个文件wangkaiyue,然后写管道是将内容存到这个管道文件中,然后读管道从管道文件中读出内容。
试对课本【例5-21】改写,一方不断向管道写入字符A,另一方以每隔3秒读1024个字符的速度从管道读数据,体验并总结管道通信时的读写双方的同步效果。
试对课本【例5-24】改写,编程实现3个进程通信,一个负责写入,另外两个负责读出,体验3方的通信过程及效果。
试对课本【例5-26】映射匿名虚存区实现共享内存 进行改写,实现父亲先计算累加100的和后写给孩子,然后孩子读取求和结果后输出。(提示:可定义一个初值为0的信号量控制父子进程的执行顺序。)
【选做】5.7.3课后训练第(3)题,试将例5-27改造为有信号量控制的内存读写操作,能实现一方对共享内存写完数据后,另一方立即响应读取数据。