newlist

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

#include "public.h"

void msg_show_attr(int msg_id,struct msqid_ds msg_info)
{

 int ret=-1;
 sleep(1);
 ret=msgctl(msg_id,IPC_STAT,&msg_info);//获取消息
 if (-1==ret)
 {
  printf("获得消息信息失败\n");
  return ;
 }
 printf("\n");
 printf("现在队列中字节数:%d\n",msg_info.msg_cbytes);
 printf("队列中消息数:%d\n",msg_info.msg_qnum);
 printf("队列照哦给你最大字节数:%d\n",msg_info.msg_qbytes);
 printf("最后发送消息的进程pid:%d\n",msg_info.msg_lspid);
 printf("最后接受消息的进程pid:%d\n",msg_info.msg_lrpid);
 printf("最后发送消息的时间:%s\n",ctime(&(msg_info.msg_stime)));
 printf("最后接受消息的时间:%s\n",ctime(&(msg_info.msg_rtime)));
 printf("最后变化时间:%s\n",ctime(&(msg_info.msg_ctime)));
 printf("消息UID是:%d\n",msg_info.msg_perm.uid);
 printf("消息GID是:%d\n",msg_info.msg_perm.gid);
}

int main()
{
 int ret=-1;
 int msg_flags,msg_id;
 key_t key;
 struct msgmbuf{
  int mtypes;
  char mtext[10];
 };
 struct msqid_ds msg_info;
 struct msgmbuf msg_mbuf;

 int msg_sflags,msg_rflags;
 char *msgpath="/ipc/msg/";
 key=ftok(msgpath,'b');
 if (key!=-1)
 {
  printf("成功创建KEY\n");
 }
 else
 {
  printf("建立KEY失败\n");
 }
 msg_flags=IPC_CREAT|IPC_EXCL;
 msg_id=msgget(key,msg_flags|0x0666);
 if (-1==msg_id)
 {
  printf("消息建立失败\n");
  return 0;
 }
 msg_show_attr(msg_id,msg_info);
 msg_sflags=IPC_NOWAIT;
 msg_mbuf.mtypes=10;
 memcpy(msg_mbuf.mtext,"测试消息",sizeof("测试消息"));//复制字符串
 ret=msgsnd(msg_id,&msg_mbuf,sizeof("测试消息"),msg_sflags);
 
 if (-1==ret)
 {
  printf("发送消息失败\n");
 }
 msg_show_attr(msg_id,msg_info);
 msg_rflags=IPC_NOWAIT|MSG_NOERROR;
 ret=msgrcv(msg_id,&msg_mbuf,10,10,msg_rflags);
 if (-1==ret)
 {
  printf("接受消息失败\n");
 }
 else
 {
  printf("接受消息成功,长度:%d\n",ret);
 }
 msg_show_attr(msg_id,msg_info);
 msg_info.msg_perm.uid=8;
 msg_info.msg_perm.gid=8;
 msg_info.msg_qbytes=12345;
 ret=msgctl(msg_id,IPC_SET,&msg_info);//设置消息属性
 if (-1==ret)
 {
  printf("设置消息属性失败\n");
  return 0;
 }
 msg_show_attr(msg_id,msg_info);
 ret=msgctl(msg_id,IPC_RMID,NULL);
 if (-1==ret)
 {
  printf("删除消息失败\n");
  return 0;
 }

 return 0;
}


 

posted on 2011-11-18 11:39  一枚程序  阅读(399)  评论(0编辑  收藏  举报