|MSGSND(2)||System Calls Manual||MSGSND(2)|
msgsnd — send a
message to a message queue
msqid, const void
msgsnd() function sends a message to
the message queue specified by msqid.
msgp points to a structure containing the message.
This structure should consist of the following members:
long mtype; /* message type */ char mtext; /* body of message */
mtype is an integer greater than 0 that can
be used for selecting messages (see
is an array of msgsz bytes, with a size between 0 and
that of the system limit (
If the number of bytes already on the message queue plus
msgsz is bigger than the maximum number of bytes on
the message queue (msg_qbytes,
see msgctl(2)), or the number of messages on all queues system-wide is already equal to the system limit, msgflg determines the action of
msgsnd(). If msgflg has
IPC_NOWAIT mask set in it, the call will return
immediately. If msgflg does not have
IPC_NOWAIT set in it, the call will block until:
After a successful call, the data structure associated with the message queue is updated in the following way:
Upon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable errno is set to indicate the error.
msgsnd() will fail if:
mtype is less than 1.
msgsz is greater than msg_qbytes.
IPC_NOWAITwas set in msgflg.
msgsnd() was waiting for a resource to become available in order to deliver the message.
msgsnd() function conforms to the
X/Open System Interfaces option of IEEE Std 1003.1-2008
Message queues first appeared in AT&T System V Release 1 UNIX and have been available since NetBSD 1.0.
|July 18, 2019||OpenBSD-current|