diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:55:15 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:55:15 -0400 |
| commit | 253e67c8b3a72b3a4757fdbc5845297628db0a4a (patch) | |
| tree | adf53b66087aa30dfbf8bf391a1dadb044c3bf4d /static/netbsd/man2/msgrcv.2 | |
| parent | a9157ce950dfe2fc30795d43b9d79b9d1bffc48b (diff) | |
docs: Added All NetBSD Manuals
Diffstat (limited to 'static/netbsd/man2/msgrcv.2')
| -rw-r--r-- | static/netbsd/man2/msgrcv.2 | 216 |
1 files changed, 216 insertions, 0 deletions
diff --git a/static/netbsd/man2/msgrcv.2 b/static/netbsd/man2/msgrcv.2 new file mode 100644 index 00000000..f064f197 --- /dev/null +++ b/static/netbsd/man2/msgrcv.2 @@ -0,0 +1,216 @@ +.\" $NetBSD: msgrcv.2,v 1.23 2026/01/02 22:22:22 nia Exp $ +.\" +.\" Copyright (c) 1995 Frank van der Linden +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. The name of the author may not be used to endorse or promote products +.\" derived from this software without specific prior written permission +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +.\" +.Dd July 24, 2013 +.Dt MSGRCV 2 +.Os +.Sh NAME +.Nm msgrcv +.Nd receive a message from a message queue +.Sh LIBRARY +.Lb libc +.Sh SYNOPSIS +.In sys/msg.h +.Ft ssize_t +.Fn msgrcv "int msqid" "void *msgp" "size_t msgsz" "long msgtyp" "int msgflg" +.Sh DESCRIPTION +The +.Fn msgrcv +function receives a message from the message queue specified in +.Fa msqid , +and places it into the user-defined structure pointed to by +.Fa msgp . +This structure must contain a first field of type +.Sy long +that will indicate the user-defined type of the message. +The remaining fields will contain the contents of the message. +The following is an example of what this user-defined structure might +look like: +.Bd -literal +struct mymsg { + long mtype; /* message type */ + char mtext[1]; /* body of message */ +}; +.Ed +.Pp +.Va mtype +is an integer greater than 0 that can be used to select messages. +.Va mtext +is an array of bytes, with size up to the system limit +.Dv MSGMAX . +.Pp +The value of +.Fa msgtyp +has one of the following meanings: +.Bl -bullet +.It +.Fa msgtyp +is greater than 0. +The first message of type +.Fa msgtyp +will be received. +.It +.Fa msgtyp +is equal to 0. +The first message on the queue will be received. +.It +.Fa msgtyp +is less than 0. +The first message of the lowest message type that is +less than or equal to the absolute value of +.Fa msgtyp +will be received. +.El +.Pp +The argument +.Fa msgsz +specifies the size in bytes of +.Va mtext . +If the received message has a length greater than +.Fa msgsz +it will be silently truncated if the +.Dv MSG_NOERROR +flag is set in +.Fa msgflg , +otherwise an error will be returned. +.Pp +If no matching message is present on the message queue specified by +.Fa msqid , +the behaviour of +.Fn msgrcv +depends on whether the +.Dv IPC_NOWAIT +flag is set in +.Fa msgflg +or not. +If +.Dv IPC_NOWAIT +is set, then +.Fn msgrcv +will immediately return a value of \-1 and set +.Va errno +to +.Er EAGAIN . +If +.Dv IPC_NOWAIT +is not set, the calling process will block until: +.Bl -bullet +.It +A message of the requested type becomes available on the message queue. +.It +The message queue is removed, in which case \-1 will be returned and +.Va errno +set to +.Er EIDRM . +.It +A signal is received and caught. +\-1 is returned and +.Va errno +is set to +.Er EINTR . +.El +.Pp +If a message is successfully received, the data structure associated with +.Fa msqid +is updated as follows: +.Bl -bullet +.It +.Va msg_lrpid +is set to the pid of the caller. +.It +.Va msg_lrtime +is set to the current time. +.It +.Va msg_qnum +is decremented by 1. +.El +.Sh RETURN VALUES +Upon successful completion, +.Fn msgrcv +returns the number of bytes received and placed into the +.Va mtext +field of the structure pointed to by +.Fa msgp . +Otherwise, \-1 is returned, and +.Va errno +set to indicate the error. +.Sh ERRORS +.Fn msgrcv +will fail if: +.Bl -tag -width Er +.It Bq Er E2BIG +A matching message was received, but its size was greater than +.Fa msgsz +and the +.Dv MSG_NOERROR +flag was not set in +.Fa msgflg . +.It Bq Er EACCES +The calling process does not have read access to the message queue. +.It Bq Er EAGAIN +There is no message of the requested type available on the message queue, +and +.Dv IPC_NOWAIT +is set in +.Fa msgflg . +.It Bq Er EFAULT +.Fa msgp +points to an invalid address. +.It Bq Er EIDRM +The message queue identifier +.Fa msqid +is removed from the system. +.It Bq Er EINTR +The system call was interrupted by the delivery of a signal. +.It Bq Er EINVAL +.Fa msqid +is not a valid message queue identifier +.Pp +The message queue was removed while +.Fn msgrcv +was waiting for a message of the requested type to become available in it. +.Pp +.Fa msgsz +is greater than +.Dv SSIZE_MAX . +.It Bq Er ENOMSG +The queue does not contain a message of the desired type and +.Dv IPC_NOWAIT +is set. +.El +.Sh SEE ALSO +.Xr msgctl 2 , +.Xr msgget 2 , +.Xr msgsnd 2 +.Sh STANDARDS +The +.Nm +system call conforms to +.St -xsh5 . +.Sh HISTORY +Message queues appeared in the first release of +.At V . |
