Linux学习笔记-消息队列的接收
生活随笔
收集整理的這篇文章主要介紹了
Linux学习笔记-消息队列的接收
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
?
?
接收消息
舉個例子
?
接收消息
#include <sys/msg.h> ssize_t msgrcv(int msgqid, void *ptr, size_t nbytes, long type, int flag); //返回值:成功返回消息的數據部分長度,出錯返回-1參數:
msgqid:消息隊列的ID;
ptr:指向存放消息的緩存;
nbytes:消息存儲的大小,不包括mtype的大小。計算方式;
nbytes = sizeof(struct mymesg) - sizeof(long)
type:消息類型
type == 0:獲取消息隊列中第一個消息;
type > 0:獲取消息隊列中類型為type的第一個消息;
type < 0:獲取消息隊列中小于或等于type絕對值的消息。
flag:0或者IPC_NOWAIT
?
舉個例子
代碼如下:
#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");}//從消息隊列中接收指定類型的消息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); }刪除:
總結
以上是生活随笔為你收集整理的Linux学习笔记-消息队列的接收的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt文档阅读笔记-QML Rotatio
- 下一篇: Linux学习笔记-消息队列的打开、创建