<a href="http://blog.csdn.net/ljianhui/article/details/10287879" target="_blank">http://blog.csdn.net/ljianhui/article/details/10287879</a>
#include <sys/type.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgget(key_t key, int flag);
int msgsnd(int msqid, const void *ptr, size_t nbytes, int flag);
int msgrcv(int msqid, void *ptr, size_t nbytes, long type, int flag);
int msgctl(int msqid, int cmd, struct mspid_ds *buf);
msgflg是一個權限标志,表示消息隊列的通路權限,它與檔案的通路權限一樣。msgflg可以與IPC_CREAT做或操作,表示當key所命名的消息隊列不存在時建立一個消息隊列,如果key所命名的消息隊列存在時,IPC_CREAT标志會被忽略,而隻傳回一個辨別符。它傳回一個以key命名的消息隊列的辨別符(非零整數),失敗時傳回-1.
int msgrcv(int msqid, void *ptr, size_t nbytes, long msgtype, int flag);
msgtype可以實作一種簡單的接收優先級。如果msgtype為0,就擷取隊列中的第一個消息。如果它的值大于零,将擷取具有相同消息類型的第一個資訊。如果它小于零,就擷取類型等于或小于msgtype的絕對值的第一個消息。
flag取值包括0(阻塞)和IPC_NOWAIT(如果消息隊列為空,則傳回一個ENOMSG)
cmd是将要采取的動作,它可以取3個值,
IPC_STAT:把msgid_ds結構中的資料設定為消息隊列的目前關聯值,即用消息隊列的目前關聯值覆寫msgid_ds的值。
IPC_SET:如果程序有足夠的權限,就把消息列隊的目前關聯值設定為msgid_ds結構中給出的值
IPC_RMID:删除消息隊列