— send a
message to a message queue
() function sends a message to the
message queue specified by msqid
points to a structure containing the
message. This structure should consist of the following members:
long mtype; /* message type */
char mtext; /* body of message */
is an integer greater than 0 that can be
used for selecting messages (see
is an array of
bytes, with a size between 0 and that
of the system limit (
If the number of bytes already on the message queue plus
is bigger than the maximum number of
bytes on the message queue (msg_qbytes
the number of messages on all queues system-wide is already equal to the
system limit, msgflg
determines the action of
mask set in it, the call will
return immediately. If msgflg
does not have
set in it, the call will block
- The condition which caused the call to block does no
longer exist. The message will be sent.
- The message queue is removed, in which case -1 will be
returned, and errno is set to
- The caller catches a signal. The call returns with
errno set to
After a successful call, the data structure associated with the message queue is
updated in the following way:
- msg_cbytes is
incremented by the size of the message.
- msg_qnum is incremented
- msg_lspid is set to the
pid of the calling process.
- msg_stime is set to the
Upon successful completion, the value 0 is returned; otherwise the
value -1 is returned and the global variable
is set to indicate the error.
() will fail if:
- msqid is not a valid
message queue identifier.
msgsz is greater than
- The calling process does not have write access to the
- There was no space for this message either on the queue, or
in the whole system, and
set in msgflg.
- msgp points to an invalid
- The system call was interrupted by the delivery of a
- The message queue was removed while
msgsnd() was waiting for a resource to become
available in order to deliver the message.
Message queues appeared in AT&T System V
Release 1 UNIX