接收消息
struct message
{
long msg_type;
char msg_text[BUFFER_SIZE];
};
int messagereceive(char *jpg_filename,int qid)
{
struct message msg;
memset(msg.msg_text,0,BUFFER_SIZE);
if (msgrcv(qid, (void*)&msg, BUFFER_SIZE,0,0)<0)
{
perror("msgrcv");
return (-1);
}
strcpy(jpg_filename,msg.msg_text);
return 0;
}
int open_message()
{
int qid;
key_t key;
if ((key = ftok(".",'a')) == -1)
{
perror("ftok");
return(-1);
}
发送信息
int open_message()
{
int qid;
key_t key;
/*鏍规嵁涓嶅悓鐨勮矾寰勫拰鍏抽敭琛ㄧず浜х敓鏍囧噯鐨刱ey*/
if ((key = ftok(".", 'a')) == -1)
{
printf("Create ftok key/n");
return -1;
}
/*鍒涘缓娑堟伅闃熷垪*/
if ((qid = msgget(key, IPC_CREAT|0666)) == -1)
{
printf("msgget message error/n");
return -1;
}
printf("Open queue %d/n", qid);
return 0;
}
int close_message(int qid)
{
/*浠庣郴缁熷唴鏍镐腑绉昏蛋娑堟伅闃熷垪 */
if ((msgctl(qid, IPC_RMID, NULL)) < 0)
{
printf("msgctl error/n");
return -1;
}
return 0;
}
int send_message(int qid,char *mes_txt)
{
struct message msg;
strcpy(msg.msg_text,mes_txt);
msg.msg_type = getpid();
/*娣诲姞娑堟伅鍒版秷鎭槦鍒?/
if ((msgsnd(qid, &msg, strlen(msg.msg_text), 0)) < 0)
{
perror("message posted");
return(-1);
}
}
if((qid = msgget(key, IPC_CREAT|0666)) == -1)
{
perror("msgget");
return(-1);
}
return qid;
}