您的位置:首页 > 编程语言 > C语言/C++

一起talk C栗子吧(第九十八回:C语言实例--使用消息队列进行进程间通信二)

2017-06-12 16:14 363 查看
各位看官们,大家好,上一回中咱们说的是使用消息队列进行进程间通信的样例。这一回咱们接着上一回的内容继续说使用消息队列进行进程间通信。闲话休提。言归正转。让我们一起talk C栗子吧!

我们在上一回中介绍了消息队列的概念和相关函数的使用方法,这一回中我们通过详细的样例来说明怎样使用消息队列进行进程间的通信。以下是使用消息队列的详细步骤

1.定义一个结构体类型(第一个成员必须是long int类型),用来当作消息队列中消息的类型;

2.使用msgget函数创建或者获取消息队列,代码中的键使用了111这个随机数字;

3.在准备发送的消息中加入数据(代码中为msg_buf.data);

4.使用msgsnd函数把步骤3中的消息发送到消息队列中。

5.使用msgrcv函数从消息队列中获取消息,而且显示消息中的数据;

6.使用msgctl函数删除消息队列,须要使用的命令:IPC_RMID;

看官们。正文中就不写代码了,详细的代码放到了我的资源中,大家能够点击这里下载使用。

该程序和共享内存的演示样例程序相似。通过在执行程序时使用不同的參数来代表不同的进程

參数:-w表示发送消息的进程;

參数:-r表示接收消息的进程。

此外,在程序中仅仅是为了演示消息队列的使用方法,没有考虑进程间的同步。

因此,须要先向消息队列中发送消息。然后才干从消息队列中获取消息。即:在执行程序时,先使用-w參数,然后再使用-r參数。假设不依照这个顺序执行程序。就会发生死锁。

以下是程序的执行结果。请大家參考:

./s -w                                                   //执行程序,通过參数w发送消息到消息队列中
write data into message.count:3,data:hello message queue //显示发送到消息队列中消息的内容
./s -r                                                   //执行程序。通过參数r从消息队列中读取消息
the data of message .count:3,data:hello message queue   //显示接收到消息队列中消息的内容


各位看官。关于使用消息队列进行进程间通信的样例咱们就讲到这里。欲知后面还有什么样例,且听下回分解 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐