我正在写信息队列
if (msgsnd(q, &msg, sizeof(message), slaves_list[to]) == -1)
并阅读
if (msgrcv(q, &msg, sizeof(message), id, 0) == -1)
但是如果这个队列是空的怎么办?怎么检查?如果没有什么我想在循环中执行下一条指令
答案 0 :(得分:4)
使用IPC_NOWAIT
。来自documentation:
如果
(msgflg & IPC_NOWAIT)
非零,则调用线程将立即返回,返回值为-1
,错误号设置为[ENOMSG]
。
答案 1 :(得分:3)
对msgflg参数使用IPC_NOWAIT:http://man7.org/linux/man-pages/man2/msgsnd.2.html
IPC_NOWAIT 如果队列中没有所请求类型的消息,则立即返回。系统调用失败,并将errno设置为ENOMSG。
答案 2 :(得分:0)
您可以使用
检查队列是否为空ipcs
linux终端中的命令。
它将显示您已创建的队列。