Can some one tell me how to check if there is any message in message queue. the message queue is implemented in C in linux based operating system. I just want to check if there is any message in the message queue at a particular time.
1 Answer
Just checking the amount (if any) of messages is done using the
msgctl()
function, and examining the msqid_ds structure on return, the msg_qnum in this structure is the amount of messages in the queue. Here is a link with an example: msgctl example, it does more then you want, but after the msgctl() call you just have to check that field in the structure I mentioned above.
#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;
}
This example should do what you want, and only do what you want.
2 Comments
Aman Singhal
I am not able to understand what this functions is doing exactly, but according to me, this code is trying to connect to the message queue, if it is unable to connect it will show error. But how this is will tell if there is a message in message queue or not ?
ikku
That is true, I was a little too fast, sorry. I updated the text with only checking IF there actually is a message.
mq_openetc....)? Can you alter the routines handling these queues?