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
BRK(2)								System Calls Manual							    BRK(2)

NAME
brk, sbrk, break - change core allocation SYNOPSIS
char *brk(addr) char *sbrk(incr) DESCRIPTION
Brk sets the system's idea of the lowest location not used by the program (called the break) to addr (rounded up to the next multiple of 64 bytes on the PDP11, 256 bytes on the Interdata 8/32, 512 bytes on the VAX-11/780). Locations not less than addr and below the stack pointer are not in the address space and will thus cause a memory violation if accessed. In the alternate function sbrk, incr more bytes are added to the program's data space and a pointer to the start of the new area is returned. When a program begins execution via exec the break is set at the highest location defined by the program and data storage areas. Ordinar- ily, therefore, only programs with growing data areas need to use break. SEE ALSO
exec(2), malloc(3), end(3) DIAGNOSTICS
Zero is returned if the break could be set; -1 if the program requests more memory than the system limit or if too many segmentation regis- ters would be required to implement the break. BUGS
Setting the break in the range 0177701 to 0177777 (on the PDP11) is the same as setting it to zero. ASSEMBLER
(break = 17.) sys break; addr Break performs the function of brk. The name of the routine differs from that in C for historical reasons. BRK(2)
All times are GMT -4. The time now is 05:46 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy