实验三进程间的通信
【实验类型】
综合性实验
【目的要求】
学习如何利用管道机制、消息缓冲队列、共享存储区机制进行进程间的通讯,并加深对上述通信机制的理解。
【内容提要】
1、了解系统调用pipe()、msgget()、msgsnd()、msgrcv ()、msgctl()、shmget()、shmat()、shmdt()、shmctl()的功能和实现过程。
2、编写一段程序,使其用管道来实现父子进程之间的进程通讯。
子进程向父进程发送自己的进程标识符,以及字符串“is sending a message to parent!”。
父进程则通过管道读出子进程发来的消息,将消息显示在屏幕上,然后终止。
3、编写一段程序,使用系统调用fork()来创建两个子进程CLIENT进程和SERVER进程,使其用消息缓冲队列来实现CLIENT进程和SERVER进程之间的通信。
SERVER端建立一个Key为75的消息队列,等待其他进程发来的消息。
当遇到类型为1的消息,则作为结束信号,取消该队列,并退出SERVER。
SERVER每接收到一条消息后显示一句“(server) received”。
CLIENT端使用Key为75的消息队列,先后发送类型从10到1的消息,然后退出。
最后的一个消息,即是SERVER端需要的结束信号。
CLIENT每发送一条消息后显示一句“(client) sent”。
父进程在SERVER和CLIENT均退出后结束。
4、编写一个与3具有类似功能的程序,使其用共享存储区来实现两个进程之间的通讯。
【主要仪器设备】
每人一台计算机,硬件要求:CPU PII以上,64M内存,1OOM硬盘空间即可;软件要求: Linux操作系统。