From: Rajat Jain <rajat.noida.india@gmail.com>
To: Steve Graegert <graegerts@gmail.com>
Cc: linux-c-programming@vger.kernel.org
Subject: Re: Detecting whether a Message Queue with a given qid exists?
Date: Tue, 1 Nov 2005 15:22:51 +0900 [thread overview]
Message-ID: <b115cb5f0510312222q14d4d717y5723a75f8848d4d9@mail.gmail.com> (raw)
In-Reply-To: <6a00c8d50510302330m193cdc91v93b745be3b2f456f@mail.gmail.com>
>
> msgget returns a valid queue identifier. To see if the queue still
> exists when you try to place a message into the queue via msgsend,
> check for EINVAL, which is returned if the queue identifier is not
> valid (any more):
>
> int result, msqid;
>
> struct m {
> long type;
> char text[64];
> } msg;
>
> m.type = 1;
> strcpy(m.text, "Hi, I am a message");
>
> if ((queue_id = msgget(KEY, 0666)) == -1) {
> /* handle error */
> }
> ... /* do some stuff here */
> result = msgsnd(queue_id, (void *)&m, sizeof(m.text), IPC_NOWAIT);
> ... /* check error here */
>
> Hope this helps.
>
Hi,
Thanks for the help. I understood this. But the above method uses msgsnd. So if the Queue actually exists, then a message will ACTUALLY be inserted. Given a qid, I want to check if a queue with that ID exists, without actually inserting a message. Is there a way or the only way out is try to insert a message, and if successful, remove that message :-(
The background og this is that I am using message queues to communicate between 2 independent programs (say A & B). Program "A" creates a message queue, writes a message in the queue and tells the qid to program B via a file. Program "B" reads the queue ID, and gets the message from the Message queue. After one message has been successfully sent, "A" wants to send another message, but before that just wants to check if the message queue it had created earlier already exists. If it does, it would insert messages in the old queue, otherwise would create a new queue and tell the new qid to "b" via the same file.
TIA,
Thanks & Best Regards,
Rajat
next prev parent reply other threads:[~2005-11-01 6:22 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-10-31 7:11 Detecting whether a Message Queue with a given qid exists? Rajat Jain
2005-10-31 7:30 ` Steve Graegert
2005-11-01 6:22 ` Rajat Jain [this message]
2005-11-01 9:11 ` Steve Graegert
2005-11-02 3:00 ` Rajat Jain
-- strict thread matches above, loose matches on Subject: below --
2005-10-31 7:15 JOSEPH ALPHONSE
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b115cb5f0510312222q14d4d717y5723a75f8848d4d9@mail.gmail.com \
--to=rajat.noida.india@gmail.com \
--cc=graegerts@gmail.com \
--cc=linux-c-programming@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).