Standard C Library Functions mq_open(3C)
NAME
mq_open - open a message queue
SYNOPSIS
#include
mqd_t mq_open(const char *name, int oflag,
/* unsigned long mode, mq_attr attr */ ...);
DESCRIPTION
The mq_open() function establishes the connection between a
process and a message queue with a message queue descriptor. It creates a open message 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 rulesfor 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 character of name must be a slash (/) character and the remaining characters of name cannot include any slash characters. For maximumportability, name should include no more than 14 charac-
ters, but this limit is not enforced. The oflag argument requests the desired receive and/or send access to the message queue. The requested access permissionto receive messages or send messages is granted if the cal-
ling process would be granted read or write access, respec-
tively, to a file with the equivalent permissions. The value of oflag is the bitwise inclusive OR of values from the following list. Applications must specify exactly one of the first three values (access modes) below in the value of oflag:O_RDONLY Open the message queue for receiving messages.
The process can use the returned message queuedescriptor with mq_receive(3C), but not
mq_send(3C). A message queue may be open multi-
ple times in the same or different processes for receiving messages.SunOS 5.11 Last change: 5 Feb 2008 1
Standard C Library Functions mq_open(3C)
O_WRONLY Open the queue for sending messages. The pro-
cess can use the returned message queuedescriptor 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 messages.O_RDWR Open the queue for both receiving and sending
messages. The process can use any of the func-
tions allowed for O_RDONLY and O_WRONLY. A mes-
sage queue may be open multiple times in thesame or different processes for sending mes-
sages. Any combination of the remaining flags may additionally be specified in the value of oflag:O_CREAT This option is used to create a message
queue, and it requires two additional argu-
ments: mode, which is of type mode_t, and
attr, which is pointer to a mq_attr struc-
ture. If the pathname, name, has already been used to create a message queue that still exists, then this flag has no effect, exceptas noted under O_EXCL (see below). Otherwise,
a message queue is created without any mes-
sages 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, themessage queue mq_maxmsg and mq_msgsize attri-
butes are set to the values of thecorresponding 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, themq_open() function fails and returns an error
without creating the message queue.SunOS 5.11 Last change: 5 Feb 2008 2
Standard C Library Functions mq_open(3C)
O_EXCL 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 respectto 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.O_NONBLOCK The setting of this flag is associated with
the open message queue description and deter-
mines whether a mq_send(3C) or mq_receive(3C)
waits for resources or messages that are not currently available, or fails with errno setto EAGAIN. See mq_send(3C) and mq_receive(3C)
for details.RETURN VALUES
Upon successful completion, mq_open() returns a message
queue descriptor; otherwise the function returns (mqd_t)-1
and sets errno to indicate the error condition.ERRORS
The mq_open() function will fail if:
EACCES The message queue exists and the permis-
sions specified by oflag are denied, or the message queue does not exist and permission to create the message queue is denied.EEXIST O_CREAT and O_EXCL are set and the named
message queue already exists.EINTR The mq_open() operation was interrupted by
a signal.EINVAL The mq_open() operation is not supported
for the given name, or O_CREAT was speci-
fied in oflag, the value of attr is notNULL, and either mq_maxmsg or mq_msgsize
was less than or equal to zero.EMFILE The number of open message queue descrip-
tors in this process exceeds MQ_OPEN_MAX,
of the number of open file descriptors inSunOS 5.11 Last change: 5 Feb 2008 3
Standard C Library Functions mq_open(3C)
this process exceeds OPEN_MAX.
ENAMETOOLONG 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. ENFILE Too many message queues are currently open in the system.ENOENT O_CREAT is not set and the named message
queue does not exist.ENOSPC There is insufficient space for the crea-
tion of the new message queue.ENOSYS The mq_open() function is not supported by
the system.ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Interface Stability | Committed ||_____________________________|_____________________________|
| MT-Level | MT-Safe |
|_____________________________|_____________________________|
| Standard | See standards(5). ||_____________________________|_____________________________|
SEE ALSO
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)
NOTES Due to the manner in which message queues are implemented, they should not be considered secure and should not be usedin security-sensitive applications.
SunOS 5.11 Last change: 5 Feb 2008 4
Standard C Library Functions mq_open(3C)
Solaris 2.6 was the first release to support the Asynchro-
nous Input and Output option. Prior to this release, thisfunction always returned -1 and set errno to ENOSYS.
SunOS 5.11 Last change: 5 Feb 2008 5