c - 如何删除所有 IPC-Message 队列?

标签 c linux unix ipc

假设我使用 msgget() 函数创建了 100 个消息队列。

 ------ Message Queues --------
 key        msqid      owner      perms      used-bytes   messages    
0x00000000 262144     bhuvaneshw 666        40           2           
0x00000000 294913     bhuvaneshw 666        40           2           
0x00000000 327682     bhuvaneshw 666        40           2           
0x00000000 360451     bhuvaneshw 666        40           2           
0x00000000 393220     bhuvaneshw 666        40           2           
0x00000000 425989     bhuvaneshw 666        55           3        
....
.....
....

使用 ipcrm 命令,我们可以一次删除单个队列。

ipcrm -q queue_id

或者使用 msgctl() 我们可以删除它。但我想一次性删除所有消息队列。有没有办法在 Linux 中做到这一点?

最佳答案

ipcrm 可以做到这一点:

ipcrm --all=msg

您可以使用 sem 和 shm 代替 msg 来获取信号量和共享内存。

关于c - 如何删除所有 IPC-Message 队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28086492/

相关文章:

linux - 由 init.d 启动的保持事件进程的标准或最佳方式

java 应用程序和 x11 转发

linux - 语法错误 源行为 1

c - C中字符串数组的二分查找

c - 如何读取 ebpf 中的堆栈跟踪内核端?

c - 访问结构成员时 valgrind 出现无效读/写错误

linux - Linux IPSEC 是否支持使用 AES GMAC 的 AH 传输?

bash - 使用 shell 更新终端上显示的最后两行?

java - 无法通过Java代码执行Unix命令

c - 为什么这个通用表达式会出错?