1. 程式人生 > >system v訊息佇列msgget函式

system v訊息佇列msgget函式

 /*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;


}