2012-09-22 64 views
4

有人能告訴我如何檢查消息隊列中是否有消息。消息隊列在基於Linux的操作系統中的C中實現。 我只想檢查特定時間在消息隊列中是否有消息。檢查Unix消息隊列是否爲空

+0

你如何實現你的消息隊列?你使用了什麼系統調用('mq_open'等....)?你能改變處理這些隊列的例程嗎? –

+1

我只是遵循本指南http://beej.us/guide/bgipc/output/html/multipage/mq.html 我已將我的消息隊列列在此處 –

回答

5

只是檢查的量(如果有的話)的消息的完成使用

msgctl() 

功能,並檢查返回時的msqid_ds結構,在這種結構的msg_qnum是隊列中的消息的數量。這裏是一個例子的鏈接:msgctl example,它確實比你想要的要多,但在msgctl()調用之後,你只需要在上面提到的結構中檢查該字段。

#include <sys/msg.h> 

main() { 
    int msqid = 2; 
    int rc; 
    struct msqid_ds buf; 
    int num_messages; 

    rc = msgctl(msqid, IPC_STAT, &buf); 
    num_messages = buf.msg_qnum; 
} 

這個例子應該做你想做的,只做你想做的。

+0

我無法理解此功能在做什麼確切地說,但據我所知,這段代碼試圖連接到消息隊列,如果它無法連接它將顯示錯誤。但是,這將如何判斷消息隊列中是否存在消息? –

+0

的確如此,我有點太快了,對不起。我更新了文本,只檢查IF是否有消息。 – ikku

+0

它比thanx好很多 –