MSGRCV(2) | NetBSD System Calls Manual | MSGRCV(2) |
ssize_t
msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg);
struct mymsg { long mtype; /* message type */ char mtext[1]; /* body of message */ };
mtype is an integer greater than 0 that can be used to select messages. mtext is an array of bytes, with size up to the system limit MSGMAX.
The value of msgtyp has one of the following meanings:
msgsz specifies the maximum length of the requested message. If the received message has a length greater than msgsz it will be silently truncated if the MSG_NOERROR flag is set in msgflg, otherwise an error will be returned.
If no matching message is present on the message queue specified by msqid, the behaviour of msgrcv() depends on whether the IPC_NOWAIT flag is set in msgflg or not. If IPC_NOWAIT is set, then msgrcv() will immediately return a value of -1 and set errno to EAGAIN. If IPC_NOWAIT is not set, the calling process will block until:
If a message is successfully received, the data structure associated with msqid is updated as follows:
The message queue was removed while msgrcv() was waiting for a message of the requested type to become available in it.
msgsz is greater than SSIZE_MAX.
January 26, 2009 | NetBSD 5.99 |