Unix IPCS消息传递相关查询

Unix IPCS消息传递相关查询,unix,operating-system,message-passing,ipcs,Unix,Operating System,Message Passing,Ipcs,我正在处理消息传递IPCS方法。关于这一点,我没有什么问题: ipcs-q中的键字段显示了0x00000000这意味着什么 我可以使用msqid查看消息是什么吗 如果在执行命令ipcs-q后存在两个条目(针对特定用户)。这是否意味着此特定用户传递了两条消息 如果已用字节和消息字段设置为0,这意味着什么 是否有其他方法可以查看消息队列是否已满 一个特定用户可以有多少队列 我试着目瞪口呆,但找不到这些问题的答案。 请帮助1.共享内存段的“键”字段通常是0x00000000。这表示在创建共享内存段期间

我正在处理消息传递IPCS方法。关于这一点,我没有什么问题:

  • ipcs-q
    中的键字段显示了
    0x00000000
    这意味着什么
  • 我可以使用msqid查看消息是什么吗
  • 如果在执行命令
    ipcs-q
    后存在两个条目(针对特定用户)。这是否意味着此特定用户传递了两条消息
  • 如果已用字节和消息字段设置为0,这意味着什么
  • 是否有其他方法可以查看消息队列是否已满
  • 一个特定用户可以有多少队列
  • 我试着目瞪口呆,但找不到这些问题的答案。 请帮助

    1.共享内存段的“”字段通常是
    0x00000000
    。这表示在创建共享内存段期间指定的IPC_PRIVATE密钥。包含更多详细信息

    2.好吧,这是不可能的。如果任何消息从msgQ“取消排队”,则预期的接收器将看不到它

    3。消息队列列表中的2个条目表示系统上当前有2个活动消息队列,由其相应的唯一键标识

    创建附加msgQ:
    ipcmk-Q

    删除现有msgQ:
    ipcrm-Q

    4.设置为0的
    used bytes
    messages
    字段表示当前没有使用该特定msgQ进行传输

    5。当前一种方法是以编程方式获取msgQ中当前排队的MSG数量,如下面的C代码段所示。接下来,可以将其与msgQ的大小进行比较,如图所示

    int ret = msgctl(msqid, IPC_STAT, &buf);  
    uint msg = (uint)(buf.msg_qnum);  
    printf("msgs in Q = %u\n", msg);  
    
    6.系统上所有MSGQ组合使用的总内存存在限制。这可以通过
    ulimit-q
    获得。msgQ中使用的字节数列在
    ipcs-Q
    输出的
    used bytes
    列下。msgQ的总数仅受可用于从上述msgQ内存池限制创建新msgQ的内存量的限制

    另外,请检查此答案的后半部分,了解有关的一些示例操作