Linux学习笔记-消息队列的接收
生活随笔
收集整理的這篇文章主要介紹了
Linux学习笔记-消息队列的接收
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄
?
?
接收消息
舉個(gè)例子
?
接收消息
#include <sys/msg.h> ssize_t msgrcv(int msgqid, void *ptr, size_t nbytes, long type, int flag); //返回值:成功返回消息的數(shù)據(jù)部分長(zhǎng)度,出錯(cuò)返回-1參數(shù):
msgqid:消息隊(duì)列的ID;
ptr:指向存放消息的緩存;
nbytes:消息存儲(chǔ)的大小,不包括mtype的大小。計(jì)算方式;
nbytes = sizeof(struct mymesg) - sizeof(long)
type:消息類(lèi)型
type == 0:獲取消息隊(duì)列中第一個(gè)消息;
type > 0:獲取消息隊(duì)列中類(lèi)型為type的第一個(gè)消息;
type < 0:獲取消息隊(duì)列中小于或等于type絕對(duì)值的消息。
flag:0或者IPC_NOWAIT
?
舉個(gè)例子
代碼如下:
#include <sys/msg.h> #include <string.h> #include <stdio.h> #include <stdlib.h>typedef struct{long type;int start;int end; }MSG;int main(int argc, char *argv[]){if(argc < 3){printf("usage: %s key type\n", argv[0]);exit(1);}key_t key = atoi(argv[1]);long type = atoi(argv[2]);int msq_id;if((msq_id = msgget(key, 0777)) < 0){perror("msgget error");}//從消息隊(duì)列中接收指定類(lèi)型的消息MSG m;if(msgrcv(msq_id, &m, sizeof(MSG) - sizeof(long), type, IPC_NOWAIT) < 0){perror("msgrcv error");}else{printf("type: %d start: %d end:%d\n", m.type, m.start, m.end);}exit(0); }刪除:
總結(jié)
以上是生活随笔為你收集整理的Linux学习笔记-消息队列的接收的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Qt文档阅读笔记-QML Rotatio
- 下一篇: Linux学习笔记-消息队列的打开、创建