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
break(1)							   User Commands							  break(1)

NAME
break, continue - shell built-in functions to escape from or advance within a controlling while, for, foreach, or until loop SYNOPSIS
sh break [n] continue [n] csh break continue ksh *break [n] *continue [n] DESCRIPTION
sh The break utility exits from the enclosing for or while loop, if any. If n is specified, break n levels. The continue utility resumes the next iteration of the enclosing for or while loop. If n is specified, resume at the n-th enclosing loop. csh The break utility resumes execution after the end of the nearest enclosing foreach or while loop. The remaining commands on the current line are executed. This allows multilevel breaks to be written as a list of break commands, all on one line. The continue utility continues execution of the next iteration of the nearest enclosing while or foreach loop. ksh The break utility exits from the enclosed for, while, until, or select loop, if any. If n is specified, then break n levels. If n is greater than the number of enclosing loops, the outermost enclosing loop shall be exited. The continue utility resumes the next iteration of the enclosed for, while, until, or select loop. If n is specified then resume at the n- th enclosed loop. If n is greater than the number of enclosing loops, the outermost enclosing loop shall be used. On this man page, ksh(1) commands that are preceded by one or two * (asterisks) are treated specially in the following ways: 1. Variable assignment lists preceding the command remain in effect when the command completes. 2. I/O redirections are processed after variable assignments. 3. Errors cause a script that contains them to abort. 4. Words that follow a command preceded by ** that are in the format of a variable assignment are expanded with the same rules as a vari- able assignment. This means that tilde substitution is performed after the = sign, and also that word splitting and file name genera- tion are not performed. ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Availability |SUNWcsu | +-----------------------------+-----------------------------+ SEE ALSO
csh(1), exit(1), ksh(1), sh( 1), attributes(5) SunOS 5.10 17 Jul 2002 break(1)
All times are GMT -4. The time now is 03:15 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy