msgget(2) 可初始化新的消息队列, 并且还可返回对应于密钥参数的队列的消息队列 ID (msqid)。 作为 msgflg 参数传递的值必须为八进制整数,并具有该队列的权限和控制标志的设置。
MSGMNI 内核配置选项确定内核支持的单一消息队列数的最大个数。如果超过此限制,msgget(2) 会失败。
以下代码说明了 msgget(2)。
#include <sys/ipc.h> #include <sys/msg.h> ... key_t key; /* key to be passed to msgget() */ int msgflg, /* msgflg to be passed to msgget() */ msqid; /* return value from msgget() */ ... key = ... msgflg = ... if ((msqid = msgget(key, msgflg)) == -1) { perror("msgget: msgget failed"); exit(1); } else (void) fprintf(stderr, "msgget succeeded"); ...