头文件:
sys/msg.h
查看:
ipcs命令
结构体:
自定义消息缓冲区结构msgbuf:
mtype:
消息类型(必须是long型;必须是结构体第一个变量)。
mtext:
消息数据(可以随意定义)。
例子:
struct msgbuf{
long mtype;/* must > 0 */
char mtext;/* data */
};
创建消息队列/消息队列ID获取:
int msgget(key_t key,int msgflg);
key:
IPC键(两种获取方式)。
1.key_t ftok(char* path,int id);
(path,id随意指定。path不存在则返回的key是-1)
2.IPC_PRIVATE
(通常用于亲缘进程)。
msgflg:
IPC_CREAT创建
IPC_CREAT|TPC_EXCL
权限:
用户读 用户写 组读 组写 其他读 其他写
宏 MSG_R MSG_W MSG_R>>3 MSG_W>>3 MSG_R>>6 MSG_W>>6
数值 0400 0200 0040 0020 0004 0002
可以使用八进制数字
例如:
0666
0表示八进制数字
第一个6表示创建者权限为读写(6=4+2)
第二个6表示同组权限为读写(6=4+2)
第三个6表示其他权限为读写(6=4+2)
返回值:
-1—————失败
非负整数——消息队列标识
代码:
IPC键为IPC_PRIVATE:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <sys/msg.h>
struct msgbuf {
long mtype; /* message type, must be