从队列中删除邮件

时间:2017-12-09 14:49:26

标签: c message-queue

我有几个进程通过msgsnd向同一个mtype向另一个进程(A)发送邮件。 进程A通过msgrcv重新获取队列中的一条消息,然后应删除队列中具有特定mtype = contact_id的所有其他消息。 发件人代码:

msg.mtype = (long)contact_id;    
if (msgsnd(msg_id, &msg, sizeof(msg) == -1) {
    fprintf(stderr, "Error: %s\n", strerror(errno));
    exit(EXIT_FAILURE);
}

发件人每个进程只向A发送一条消息。

流程代码A:

       msgrcv(msg_id, &msg, sizeof(msg), contact_id, 0); //first recive
        while ((num_bytes = msgrcv(msg_id, &msg, sizeof(msg), contact_id, 0)) != -1 && errno != ENOMSG) { 
        printf("return value = %d - errno = %d %s\n",num_bytes, errno, strerror(errno));
      //code
        }

这是我的解决方案但不起作用。它进入一个循环并且不会退出它。输出:return value = 24 - errno = 0 Success 如何编辑while条件?

0 个答案:

没有答案