mq_open man page on SmartOS

Man page or keyword search:  
man Server   16655 pages
apropos Keyword Search (all sections)
Output format
SmartOS logo
[printable version]

MQ_OPEN(3C)							   MQ_OPEN(3C)

       mq_open - open a message queue

       #include <mqueue.h>

       mqd_t mq_open(const char *name, int oflag,
	    /* unsigned long mode, mq_attr attr */  ...);

       The mq_open() function establishes the connection between a process and
       a message queue with a message queue descriptor. It creates a open mes‐
       sage  queue description that refers to the message queue, and a message
       queue descriptor that refers to that open  message  queue  description.
       The  message  queue  descriptor	is used by other functions to refer to
       that message queue.

       The name argument points to a string naming a message queue.  The  name
       argument	 must  conform	to the construction rules for a	 path-name. If
       name is not the name of an existing message queue and its  creation  is
       not  requested, mq_open() fails and returns an error. The first charac‐
       ter of name must be a slash  (/) character and the remaining characters
       of  name cannot include any slash characters.  For maximum portability,
       name should include no more than 14 characters, but this limit  is  not

       The  oflag  argument requests the desired receive and/or send access to
       the message queue. The requested access permission to receive  messages
       or  send	 messages  is  granted if the calling process would be granted
       read or write access, respectively, to a file with the equivalent  per‐

       The  value of oflag is the bitwise inclusive OR of values from the fol‐
       lowing list. Applications must specify exactly one of the  first	 three
       values (access modes) below in the value of oflag:

		    Open the message queue for receiving messages. The process
		    can	 use  the  returned  message  queue  descriptor	  with
		    mq_receive(3C),  but not mq_send(3C).  A message queue may
		    be open multiple times in the same or different  processes
		    for receiving messages.

		    Open  the  queue for sending messages. The process can use
		    the returned message queue descriptor with mq_send(3C) but
		    not	 mq_receive(3C).  A message queue may be open multiple
		    times in the same or different processes for sending  mes‐

		    Open  the  queue  for both receiving and sending messages.
		    The process can use	 any  of  the  functions  allowed  for
		    O_RDONLY  and O_WRONLY. A message queue may be open multi‐
		    ple times in the same or different processes  for  sending

       Any combination of the remaining flags may additionally be specified in
       the value of oflag:

		      This option is used to create a message  queue,  and  it
		      requires	two  additional	 arguments:  mode, which is of
		      type mode_t, and	attr, which is pointer	to  a  mq_attr
		      structure.  If the pathname, name, has already been used
		      to create a message queue that still exists,  then  this
		      flag  has	 no  effect, except as noted under O_EXCL (see
		      below). Otherwise, a message queue  is  created  without
		      any messages in it.

		      The user ID of the message queue is set to the effective
		      user ID of process, and the  group  ID  of  the  message
		      queue  is	 set to the effective group ID of the process.
		      The file permission bits are set to the value  of	 mode,
		      and  modified  by clearing all bits set in the file mode
		      creation mask of the process (see umask(2)).

		      If attr is non-NULL and  the  calling  process  has  the
		      appropriate   privilege	on  name,  the	message	 queue
		      mq_maxmsg and mq_msgsize attributes are set to the  val‐
		      ues  of  the corresponding members in the mq_attr struc‐
		      ture referred to by attr. If attr is non-NULL,  but  the
		      calling  process does not have the appropriate privilege
		      on name, the mq_open() function  fails  and  returns  an
		      error without creating the message queue.

		      If  both O_EXCL and O_CREAT are set, mq_open() will fail
		      if the message queue name	 exists.  The  check  for  the
		      existence	 of  the message queue and the creation of the
		      message queue if it  does	 not  exist  are  atomic  with
		      respect  to  other  processes executing mq_open() naming
		      the same name with both  O_EXCL  and  O_CREAT  set.   If
		      O_EXCL and O_CREAT are not set, the result is undefined.

		      The  setting  of	this  flag is associated with the open
		      message  queue  description  and	determines  whether  a
		      mq_send(3C)  or  mq_receive(3C)  waits  for resources or
		      messages that are not currently available, or fails with
		      errno  set to EAGAIN. See mq_send(3C) and mq_receive(3C)
		      for details.

       Upon successful completion, mq_open() returns a message queue  descrip‐
       tor;  otherwise	the function returns (mqd_t)−1 and sets errno to indi‐
       cate the error condition.

       The  mq_open() function will fail if:

			The message queue exists and the permissions specified
			by  oflag  are	denied,	 or the message queue does not
			exist and permission to create the  message  queue  is

			O_CREAT and O_EXCL are set and the named message queue
			already exists.

			The mq_open() operation was interrupted by a signal.

			The mq_open() operation is not supported for the given
			name,  or O_CREAT was specified in oflag, the value of
			attr is not NULL, and either mq_maxmsg	or  mq_msgsize
			was less than or equal to zero.

			The  number  of open message queue descriptors in this
			process exceeds MQ_OPEN_MAX, of	 the  number  of  open
			file descriptors in this process exceeds OPEN_MAX.

			The  length  of the name string exceeds PATH_MAX, or a
			pathname  component  is	 longer	 than  NAME_MAX	 while
			_POSIX_NO_TRUNC is in effect.

			Too many message queues are currently open in the sys‐

			O_CREAT is not set and the named  message  queue  does
			not exist.

			There  is  insufficient	 space for the creation of the
			new message queue.

			The mq_open() function is not supported by the system.

       See attributes(5) for descriptions of the following attributes:

       │Interface Stability │ Committed		│
       │MT-Level	    │ MT-Safe		│
       │Standard	    │ See standards(5). │

       exec(2), exit(2), umask(2), sysconf(3C), mqueue.h(3HEAD), mq_close(3C),
       mq_receive(3C),	   mq_send(3C),	    mq_setattr(3C),	mq_unlink(3C),
       attributes(5), standards(5)

       Due to the manner in which message queues are implemented, they	should
       not  be	considered secure and should not be used in security-sensitive

       Solaris 2.6 was the first release to support the Asynchronous Input and
       Output  option. Prior to this release, this function always returned −1
       and set errno to ENOSYS.

				  Feb 5, 2008			   MQ_OPEN(3C)

List of man pages available for SmartOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
Vote for polarhome
Free Shell Accounts :: the biggest list on the net