你好,游客 登录 注册 搜索
背景:
阅读新闻

Linux进程间通信:消息队列

[日期:2013-01-28] 来源:Linux社区  作者:huangminqiang [字体: ]

4.发送信息到消息队列
    int msgsnd(int msqid,  struct msgbuf *msgp,  size_t msgsz,  int msgflag)
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
功能:

    将新消息添加到队列尾端,即向消息队列中发送一条消息。
参数:
    msqid:已打开的消息队列id
    msgp:存放消息的结构体指针。
    msgflag:函数的控制属性。
    消息结构msgbuf为:
    struct msgbuf
    {
        long mtype;//消息类型
        char mtext[1];//消息正文,消息数据的首地址
    }
    msgsz:消息数据的长度。
    msgflag:
    IPC_NOWAIT: 指明在消息队列没有足够空间容纳要发送的消息时,msgsnd立即返回。
    0:msgsnd调用阻塞直到条件满足为止.(一般选这个)

 

5. 从消息队列接收信息
    ssize_t msgrcv(int msqid,  struct msgbuf *msgp,  size_t msgsz,  long msgtype,  int msgflag)
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
功能:

    从队列中接收消息
参数:
    msqid:已打开的消息队列id
    msgp:存放消息的结构体指针。
    msgsz:消息的字节数,指定mtext的大小。
    msgtype:消息类型,消息类型 mtype的值。
    msgflag:函数的控制属性。
    msgflag:
        MSG_NOERROR:若返回的消息比nbytes字节多,则消息就会截短到nbytes字节,且不通知消息发送进程.
        IPC_NOWAIT:调用进程会立即返回.若没有收到消息则返回-1.
        0:msgrcv调用阻塞直到条件满足为止.
在成功地读取了一条消息以后,队列中的这条消息将被删除。

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款