消息队列与信号量

消息队列:

基本特点:是由内核负责维护管理的数据链表,通过消息类型收发数据。

int msgget(key_t key, int msgflg);
功能:创建/获取消息队列
key:IPC键值
msgflg:
    IPC_CREAT 创建消息队列
    IPC_EXCL 如果消息队列已经存在则返回错误
    mode_flags:创建消息队列时需要提供权限
返回值:成功返回IPC标识符,错误返回-1。

int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);
功能:向消息队列发送数据
msqid:IPC标识符
msgp:要发送的消息的首地址
    struct msgbuf {
        long mtype;     // 消息类型
        char mtext[5];  // 数据
    };
msgsz:数据的字节数,不包含消息类型。
msgflg:
    阻塞一般写0。
    IPC_NOWAIT 当消息队列满时,不等待立即返回。

ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp,int msgflg);
功能:从消息队列中读取数据
msqid:IPC标识符
msgp:存储数据结构首地址
msgsz:结构体的字节数
msgtyp:消息类型
    >0 读取消息类型等于msgtyp的消息。
    =0 读取消息队列第一条消息。
    <0 读取消息类型小于abs(msgtyp)的消息,如果有多个则读取最小的。
msgflg:
    IPC_NOWAIT 消息类型不符合时不阻塞,立即返回。
    MSG_EXCEPT 如果msgty
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值