system v訊息佇列msgget函式
阿新 • • 發佈:2018-12-14
/*msgget函式建立訊息佇列*/ #include <unistd.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> #include <stdlib.h> #include <stdio.h> #include <errno.h> #define ERR_EXIT(m) do \ { \ perror(m); \ exit(EXIT_FAILURE); \ }while(0) int main(void) { int msgid; //跟open函式相似 //msgid = msgget(1234, 0666 | IPC_CREAT);//1234為訊息佇列key,0666為許可權,IPC_CREAT為建立且只建立一次 msgid = msgget(1234, 0666 | IPC_CREAT | IPC_EXCL);//第二次建立已有訊息佇列會報錯 //msgid = msgget(IPC_PRIVATE, 0666 | IPC_CREAT | IPC_EXCL);//建立0號訊息佇列(可以為多個),只用於有血緣關係的程序通訊 //msgid = msgget(IPC_PRIVATE, 0666);//所以當存在IPC_PRIVATE不再需要IPC_CREAT | IPC_EXCL //msgid = msgget(1234, 0);//0可以開啟任何許可權的訊息佇列,只打開不建立 if(msgid == -1) { ERR_EXIT("msgget"); } printf("msgget success\n"); return 0; }