Count Messages in Message Queue

A

Ahmad Jalil Qarshi

Hi,

I have developed an application in C on IBM AIX 5.2. Its using
multiple Message Queues to share data between different processes. I
am using following functions to send/receive messages into/from
message queues:

int msgget(key_t, int);
ssize_t msgrcv(int, void *, size_t, long int, int);
int msgsnd(int, const void *, size_t, int);

Now I want to calculate number of messages in each message queue at a
specific time. So which function should I use? There is a function
named "mq_getattr" to get queue attributes. Can this help out?

Thanks in anticipation.

Regards,

Ahmad Jalil Qarshi
 
J

Jens Thoms Toerring

This is not really the correct place to ask this question. Your
question is not about the C language or standard C library, which are
the topics here. Instead your question is about the use of a
system-specific library, which is not part of the C language itself.
I see a large number of newsgroups dedicated to IBM's AIX, although I
do not know how active any of them are. For example:
and several in the family
news:ibm.*.aix.

Since the functions named by Ahmad are all POSIX functions and thus
probably not AIX-specific also e.g. comp.unix.programmer would be
a reasonable choice of a group for asking the question.

Regards, Jens
 
A

Antoninus Twink

I have developed an application in C on IBM AIX 5.2. Its using
multiple Message Queues to share data between different processes. I
am using following functions to send/receive messages into/from
message queues:

int msgget(key_t, int);
ssize_t msgrcv(int, void *, size_t, long int, int);
int msgsnd(int, const void *, size_t, int);

Now I want to calculate number of messages in each message queue at a
specific time. So which function should I use? There is a function
named "mq_getattr" to get queue attributes. Can this help out?

No, but there's a function called msgctl() that you can use for that.

int msgctl(int msqid, int cmd, struct msqid_ds *buf);

If you call this function with IPC_STAT as the cmd argument, this will
fill out the struct pointed to by buf with various bits of information
from the kernel struct associated to the message queue. Check the
documentation for your system to find out what this information consists
of, but in particular POSIX guarantees the existence of a buf->msg_qnum
field of type msgqnum_t, which contains the current number of messages
in the queue.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,997
Messages
2,570,241
Members
46,831
Latest member
RusselWill

Latest Threads

Top