linux-c-programming.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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


  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).