Sponsored Content
Top Forums Programming creating a message queue using mq_open Post 302471089 by parusasi on Friday 12th of November 2010 12:38:18 AM
Old 11-12-2010
Quote:
Originally Posted by Loic Domaigne
Yeah, now I understand your problem. How do you check that the error returned by mq_open() ? On which OS do you see this problem?
Thank you for time,
I am giving below the code snippet which i use.
Code:
oflags = 0;
  oflags |= (Flags & MQ_READ)?(O_RDONLY):(0);
  oflags |= (Flags & MQ_WRITE)?(O_WRONLY):(0);
  oflags |= (Flags & MQ_READ_WRITE)?(O_RDWR):(0);
  oflags |= (Flags & MQ_NON_BLOCKING)?(O_NONBLOCK):(0);
  oflags |= (O_CREAT | O_EXCL); // try to create it first
  mqAttr.mq_maxmsg = maxMsg;
  mqAttr.mq_msgsize = msgSz + sizeof(MSG_Q_HEADER);
  
  if ((fileDesc = mq_open( "/iothreadNewTest435", oflags,(S_IRUSR | S_IWUSR),NULL)) == -1 )
  {
    rc = mqEvalErrnoOpen(pName))

}

mqEvalErrnoOpen( const char * pName )
{
 MQ_RC rc;
 int err = 0;

  switch ( errno )
  {
  case EACCES:
    rc = MQ_INVALID_ACCESS;
    break;

  case EEXIST:
    rc = MQ_ALREADY_EXISTS;
    break;

  case EFAULT:
    rc = MQ_INVALID_ADDRESS;
    break;

  case EINVAL:
    rc = MQ_INVALID_ACCESS;
    break;

  case EMFILE:
    rc = MQ_TOO_MANY_MSG_Q_DESC;
    break;

  case ENAMETOOLONG:
    rc = MQ_NAME_TOO_LONG;
    break;

  case ENFILE:
    rc = MQ_TOO_MANY_MSG_Q_DESC;
    break;

  case ENOENT:
    rc = MQ_QUEUE_NOT_PRESENT;
    break;

  case ENOMEM:
    rc = MQ_INSUFFICIENT_MEMORY;
    break;

  case ENOSPC:
    rc = MQ_INSUFFICIENT_MEMORY;
    break;

  case ENOTSUP:
    rc = MQ_NOT_SUPPORTED_CHECKPOINT_RESTART_PROC;
    break;

  default:
    rc = MQ_ERRNO;
    err = errno;
    break;
  }

Here rc is returning a value MQ_INVALID Address.
My os details are as follows Fedora Sulphur
Code:
Linux myMachine 2.6.25-14.fc9.i686 #1 SMP Thu May 1 06:28:41 EDT 2008 i686 i686 i386 GNU/Linux

Please help me with this,
Thanks again,
Paru.

Last edited by Scott; 11-15-2010 at 02:52 AM.. Reason: Code tags
 

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Unix message Queue

Hi, I am working closly with unix message queues i have encountered the following - after creating the Q and start working with it (pushing & pulling) i receive the following stange parameters on the q's - STIME=no_entry Qnum=0 CBYTES=4140 when this happens, the Q is disabled (meaning i... (3 Replies)
Discussion started by: kel
3 Replies

2. HP-UX

error mq_open message queue

Hello, J work on a HP. I want to create message queue by using mq_open with this parameters: mq_open(p,O_CREAT|O_WRONLY|O_EXCL|0_NONBLOCK,0600,&queue_attr) with p char and the function returns the value -1 and errno equal 2. can you help me ? Thank. (3 Replies)
Discussion started by: AUBERT
3 Replies

3. Programming

Message Queue with fork() help

hi all... ive been trying this program where i spawn 4 threads... and i am trying to use message queue to send msgs from 3 of the threads to the parent thread... but it doent seem to be working... ive almost pulled out my hair tryin to fix the prob :confused: another wierd thing... (1 Reply)
Discussion started by: strider
1 Replies

4. Programming

message queue

Hello, i need to write a message queue "chat server", that should work only localy. Can anyone please help me with some ideas and peshaps code. I'm studying the UNIX IPC mechanisms right now. So far, i understand how it works but i still cannot get an idea how to write a chat programm... ... (2 Replies)
Discussion started by: etenv
2 Replies

5. Programming

URGENT:::Can anybody help me in creating message queue appliction??

hello, I had to implement a message queue application....between 30 processes...... all 30 proceses are getting data from serial port.... And here is THE FLOW::::::::1 connector process...which is linked with message queue to all the 30 applications. Processes get the data from serial port and... (9 Replies)
Discussion started by: arunchaudhary19
9 Replies

6. Programming

How to limit max no of message in a posix message queue

Hii can anyone pls tell how to limit the max no of message in a posix message queue. I have made changes in proc/sys/fs/mqueue/msg_max But still whenever i try to read the value of max. message in the queue using attr.mq_curmsgs (where struct mq_attr attr) its giving the default value as 10.... (0 Replies)
Discussion started by: mohit3884
0 Replies

7. Programming

UNIX Message Queue

Hello !!!!! I have a simple question but i can't find the answer anywhere hope to meet it here. Why it is a bad idea to pass pointers through message queues ? Most structs i see all of their char types are arrays... Is it becase having pointers means we could possibily send wrong bytes ? For... (2 Replies)
Discussion started by: qlyine
2 Replies

8. Ubuntu

Message Queue in Linux

Hello How can I see the created message queues in the system? (4 Replies)
Discussion started by: xyzt
4 Replies

9. Programming

Permission denied when creating message queue

Hi guys. i have wrote a simple program to test message queue attributes. here it is: #include <stdio.h> #include <stdlib.h> #include <mqueue.h> #include <fcntl.h> #include <string.h> #include <errno.h> #include <sys/stat.h> int main() { struct mq_attr attr; mqd_t mqd; ... (2 Replies)
Discussion started by: majid.merkava
2 Replies

10. Programming

POSIX message queue mq_open directory

hello, I try to test the POSIX mq_open function on book unp like below: #include "unpipc.h" # include <mqueue.h> int main(int argc, char **argv) { int c, flags; mqd_t mqd; flags = O_RDWR | O_CREAT; while ((c = getopt(argc, argv, "e")) != -1) { ... (3 Replies)
Discussion started by: anpufeng
3 Replies
mq_unlink(2)							System Calls Manual						      mq_unlink(2)

NAME
mq_unlink - unlink a message queue SYNOPSIS
DESCRIPTION
The system call disassociates the queue name, from a message queue specified by the argument, name. After a successful call to attempts to open a message queue with the same name will fail, if the flag is not set in oflags. If there are no processes with existing open descriptors for the message queue, the queue is destroyed. If one or more processes have the message queue open, the removal of the queue is postponed until all descriptors for the queue have been closed. To use this function, link in the realtime library by specifying on the compiler or linker command line. Security Restrictions Some or all of the actions associated with this system call are subject to compartmentalization restrictions. See compartments(5) for more information. Some or all of the actions associated with this system call require privileges. See privileges(5). RETURN VALUE
returns the following values: Successful completion. Failure, is set to indicate the error. ERRORS
If fails, is set to one of the following values: [EACCES] Permission to unlink the named message queue is denied. [EINVAL] The argument name is not a valid message queue name. [ENAMETOOLONG] The length of the name string exceeds bytes, or the length of a (pathname) component of the name string exceeds bytes while is in effect. [ENOENT] The named message queue does not exist. [ENOSYS] is not supported by the implementation. SEE ALSO
mq_open(2), mq_close(2), compartments(5), privileges(5). STANDARDS CONFORMANCE
mq_unlink(2)
All times are GMT -4. The time now is 04:22 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy