send a message to a message queue
Standard C Library (libc, -lc)
() function sends a message to the
message queue specified in msqid
argument points to a structure
containing the message. This structure should consist of the following
long mtype; /* message type */
char mtext; /* body of message */
is an integer greater than 0 that can be
used for selecting messages (see msgrcv(2)
is an array of
bytes. The argument
can range from 0 to a system-imposed
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
), or the number of messages on all
queues system-wide is already equal to the system limit,
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
- msg_qnum is incremented by 1.
- msg_lspid is set to the pid of the
- msg_stime is set to the current
() function returns the
value 0 if successful; otherwise the value -1 is returned and
the global variable errno
is set to indicate
() function will fail if:
- The msqid argument is not a valid message
The message queue was removed while
msgsnd() was waiting for a resource to
become available in order to deliver the message.
The msgsz argument is greater than
The mtype argument is not greater than
- The calling process does not have write access to the message queue.
- There was no space for this message either on the queue, or in the whole
IPC_NOWAIT was set in
- The msgp argument points to an invalid
- The system call was interrupted by the delivery of a signal.
Message queues appeared in the first release of AT&T Unix System V.
do not define
error value, which should be used
in the case of a removed message queue.