TEST(MQ‘key)

/*********************************************************************************************
 *  file name:   HomeWork.c
 *  author   :   wvjnuhhail@sina.cn
 *  data     :   2024/05/27
 *  function :   测试消息队列的键值key的组成
 *  note     :   None
 *
 *
 *  CopyRight (c) 2023-2024     All Right Reseverd
 *
 * *******************************************************************************************/

#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/ipc.h>

#include <sys/stat.h>
#include <unistd.h>

#include <sys/msg.h>

int main()
{
  // 创建消息队列
  key_t key = ftok(".", 0xFFFFFF02);

  int msg_id = msgget(key, IPC_CREAT | 0644);

  // 错误处理
  if (-1 == msg_id)
  {
    fprintf(stderr, "msgget error,errno:%d,%s\n",
            errno, strerror(errno));
  }

  // 输出创建成功的MQ的id
  printf("msg key is  %#x\n", key);

  // 可以选择验证key的生成算法  
  struct stat myStat;

  stat(".", &myStat);

  // 测试消息队列的键值key的dev_number
  printf("dev is %#x\n", myStat.st_dev);

  // 测试消息队列的键值key的inode_number
  printf("ino is  %#x\n", myStat.st_ino);

  // 测试消息队列的键值key的project_id
  printf("0xFFFFFF02\n");
    
    //key:project_id(8bit) + device_number(8bit) + inode_number(16bit)

  return 0;
}

image

posted @ 2024-05-27 21:53  WJnuHhail  阅读(6)  评论(0编辑  收藏  举报