Linux下消息队列操作

接收消息

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值