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