- 本文出自<svtter.github.io>
实验内容
消息的创建,发送,和接收。
<任务>
使用系统调用 msgget( ), megsnd( ), msgrev( )及 msgctl()编制一长度为 1K 的消息发送和接收的程序 。
程序设计
- 为了便于操作和观察结, 用一个程序为引子 , 先后
fork( )
两个子进程 , SERVER 和 CLIENT,进行通信。 - SERVER 端建立一个 Key 为 75 的消息队列,等待其他进程发来的消息。当遇到类型为 1 的消息,
则作为结束信号,取消该队列,并退出 SERVER 。SERVER 每接收到一个消息后显示一句 “(server)received”。
- CLIENT 端使用 Key 为 75 的消息队列,先后发送类型从 10 到 1 的消息,然后退出。最后的一个
消息,既是 SERVER 端需要的结束信号。CLIENT 每发送一条消息后显示一句“(client)sent”。
- 父进程在 SERVER 和 CLIENT 均退出后结束。
使用的函数
并非每次创建消息队列都会成功,所以重新添加-1情况的判断。
可以使用
ipcs -q
命令查看