运行结不雅如下:


四、例子分析——消息类型
这里重要解释一下消息类型是怎么一回事,留意msgreceive.c文件main函数中定义的变量msgtype(注释为留意1),它作为msgrcv函数的接收信息类型参数的值,其值为0,表示获取队列中第一个可用的消息。再来看看msgsend.c文件中while轮回中的语句data.msg_type = 1(注释为留意2),它用来设置发送的信息的信息类型,即其发送的信息的类型为1。所以法度榜样msgreceive可以或许接收到法度榜样msgsend发送的信息。
如不雅把留意1,即msgreceive.c文件main函数中的语句由long int msgtype = 0;改变为long int msgtype = 2;会产生什么情况,msgreceive将不克不及接收到法度榜样msgsend发送的信息。因为在调用msgrcv函数时,如不雅msgtype(第四个参数)大年夜于零,则将只获取具有雷同消息类型的第一个消息,修改后获取的消息类型为2,而msgsend发送的消息类型为1,所以不克不及被msgreceive法度榜样接收。从新编译msgreceive.c文件并再次履行,其结不雅如下:
我们可以看到,msgreceive并没有接收到信息和输出,并且当msgsend输入end停止后,msgreceive也没有停止,经由过程jobs敕令我们可以看到它还在后台运行着。
推荐阅读
Windows 10 Build 16215带来的11大Fall Creators Update最佳功能_IT技术周刊第506期
【义务编辑:刘晶晶 TEL:(010)68476606】 >>>详细阅读
本文标题:Linux进程间通信——使用消息队列
地址:http://www.17bianji.com/lsqh/35826.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示