*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->OpenBSD man pages -> msgsnd (2)              



NAME    [Toc]    [Back]

     msgsnd - send a message to a message queue

SYNOPSIS    [Toc]    [Back]

     #include <sys/types.h>
     #include <sys/ipc.h>
     #include <sys/msg.h>

     msgsnd(int  msqid,  const  void  *msgp,  size_t  msgsz,  int

DESCRIPTION    [Toc]    [Back]

     The msgsnd() function sends a message from the message queue
specified in
     msqid.  msgp points to a structure containing  the  message.
This structure
 should consist of the following members:

         long mtype;    /* message type */
         char mtext[1]; /* body of message */

     mtype  is an integer greater than 0 that can be used for selecting messages
 (see msgrcv(2)), mtext is an array of  bytes,  with  a
size up to that
     of the system limit (MSGMAX).

     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 systemwide 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:

     +o    The  condition  which  caused the call to block does no
longer exist.
         The message will be sent.

     +o   The message queue is removed, in which case -1  will  be
returned, and
         errno is set to EINVAL.

     +o    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:

     +o   msg_cbytes is incremented by the size of the message.

     +o   msg_qnum is incremented by 1.

     +o   msg_lspid is set to the pid of the calling process.

     +o   msg_stime is set to the current time.

RETURN VALUES    [Toc]    [Back]

     Upon successful completion, 0 is returned.  Otherwise, -1 is
returned and
     errno is set to indicate the error.

ERRORS    [Toc]    [Back]

     msgsnd() will fail if:

     [EINVAL]      msqid is not a valid message queue identifier.

                   The  message  queue was removed while msgsnd()
was waiting
                   for a resource to become available in order to
deliver the

                   msgsz   is   less  than  0,  or  greater  than

     [EACCES]      The calling process does not have write access
to the message

     [EAGAIN]       There was no space for this message either on
the queue, or
                   in the whole system, and IPC_NOWAIT was set in

     [EFAULT]      msgp points to an invalid address.

     [EINTR]        The system call was interrupted by the delivery of a signal.

SEE ALSO    [Toc]    [Back]

     msgctl(2), msgget(2), msgrcv(2)

HISTORY    [Toc]    [Back]

     Message queues appeared in the first release  of  AT&T  Unix
System V.

BUGS    [Toc]    [Back]

     OpenBSD  does not define the EIDRM error value, which should
be used in
     the case of a removed message queue.

OpenBSD     3.6                         August      17,      1995
[ Back ]
 Similar pages
Name OS Title
mq_send IRIX send a message to a queue
mq_open Tru64 Establishes the connection between a message queue and a message queue descriptor (P1003.1b)
mq_receive Tru64 Receives the oldest, highest-priority message from the message queue (P1003.1b)
mq_send Tru64 Places a message in the message queue (P1003.1b)
send Tru64 send a message (only available within the message handling system, mh)
sendmsg Tru64 Send a message from a socket using a message structure
msgrcv NetBSD receive a message from a message queue
msgrcv OpenBSD receive a message from a message queue
msgrcv Tru64 Receive a message from a message queue
msgrcv FreeBSD receive a message from a message queue
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service