【问题标题】:Check if a IPC message queue already exists without creating it检查 IPC 消息队列是否已经存在而不创建它
【发布时间】:2017-04-14 20:02:03
【问题描述】:

如何在不创建消息队列的情况下检查消息队列是否存在?

当使用msggetO_CREAT | O_EXCL 标志时,如果它存在,则调用将失败并返回值-1,但如果不存在,它将创建一个新的消息队列。有什么方法可以检查吗?

【问题讨论】:

  • 如果您将零作为标志传递(或至少不传递IPC_CREAT 标志),那么如果没有消息队列与指定的键。我推荐你read the manual page
  • 感谢您的提示,我阅读了手册,没有注意到 ENOENT 标志。

标签: c linux ipc message-queue


【解决方案1】:

ipcs(1) 提供有关 IPC 设施的信息,ipcrm(1) 可用于从系统中删除 IPC 对象。

列出共享内存段:

ipcs -m

列出消息队列:

ipcs -q

删除使用 shmkey 创建的共享内存段:

ipcrm -M 键

删除由 shmid 标识的共享内存段:

ipcrm -m id

删除使用 msgkey 创建的消息队列:

ipcrm -Q 键

删除由 msgid 标识的消息队列:

ipcrm -q id

【讨论】:

    猜你喜欢
    • 2014-06-18
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 2012-09-19
    • 2021-03-12
    相关资源
    最近更新 更多