[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.c

Count Messages in Message Queue

Ahmad

8/10/2008 11:28:00 PM

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
3 Answers

Jack Klein

8/11/2008 1:30:00 AM

0

On Sun, 10 Aug 2008 16:27:50 -0700 (PDT), Ahmad Jalil Qarshi
<Ahmad.Jalil.Qarshi@gmail.com> wrote in comp.lang.c:

> 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

Ahmed,

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:

news:comp.sys.aix, news:comp.unix.aix, and several in the family
news:ibm.*.aix.

The people most knowledgeable about AIX and the specific functions you
are trying to use will most likely be found in one of these groups.

I suggest you take a look at these groups, and select one or two to
ask this question.

--
Jack Klein
Home: http://JK-Tech...
FAQs for
comp.lang.c http://...
comp.lang.c++ http://www.parashift.com/c++...
alt.comp.lang.learn.c-c++
http://www.club.cc.cmu.edu/~ajo/docs/FAQ-...

jt

8/11/2008 12:53:00 PM

0

Jack Klein <jackklein@spamcop.net> wrote:
> On Sun, 10 Aug 2008 16:27:50 -0700 (PDT), Ahmad Jalil Qarshi
> <Ahmad.Jalil.Qarshi@gmail.com> wrote in comp.lang.c:
> > 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?

> 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:

> news:comp.sys.aix, news:comp.unix.aix, 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
--
\ Jens Thoms Toerring ___ jt@toerring.de
\__________________________ http://t...

John B. Matthews

8/11/2008 5:46:00 PM

0

On 10 Aug 2008 at 23:27, Ahmad Jalil Qarshi wrote:
> 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.