Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (SunOS-5.10)
Apropos / Subsearch:
optional field

msgsnd(2)                        System Calls                        msgsnd(2)

       msgsnd - message send operation

       #include <sys/msg.h>

       int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);

       The msgsnd() function is used to send a message to the queue associated
       with the message queue identifier specified by msqid.

       The msgp argument points to a user-defined  buffer  that  must  contain
       first  a  field of type long int that will specify the type of the mes-
       sage, and then a data portion that will hold the data bytes of the mes-
       sage.  The structure below is an example of what this user-defined buf-
       fer might look like:

       struct  mymsg {
               long  mtype;     /* message type */
               char  mtext[1];  /* message text */

       The mtype member is a non-zero positive type long int that can be  used
       by the receiving process for message selection.

       The  mtext member is any text of length msgsz bytes. The msgsz argument
       can range from 0 to a system-imposed maximum.

       The msgflg argument specifies the action to be taken if one or more  of
       the following are true:

         o  The  number  of bytes already on the queue is equal to msg_qbytes.
            See intro(2).

         o  The total number of messages on the queue would exceed the maximum
            allowed by the system. See NOTES.

       These actions are as follows:

         o  If  (msgflg&&amp;IPC_NOWAIT)  is non-zero, the message will not be sent
            and the calling process will return immediately.

         o  If (msgflg&&amp;IPC_NOWAIT) is 0, the calling process will suspend exe-
            cution until one of the following occurs:

              o  The  condition  responsible  for  the  suspension  no  longer
                 exists, in which case the message is sent.

              o  The message queue identifier msqid is removed from the system
                 (see  msgctl(2));  when  this  occurs,  errno is set equal to
                 EIDRM and -1 is returned.

              o  The calling process receives a signal that is to  be  caught;
                 in  this case the message is not sent and the calling process
                 resumes execution in the manner prescribed in sigaction(2).

       Upon successful  completion,  the  following  actions  are  taken  with
       respect to the data structure associated with msqid (see intro(2)):

         o  msg_qnum is incremented by 1.

         o  msg_lspid is set equal to the process ID of the calling process.

         o  msg_stime is set equal to the current time.

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

       The msgsnd() function will fail if:

       EACCES          Operation permission is denied to the calling  process.
                       See intro(2).

       EAGAIN          The message cannot be sent for one of the reasons cited
                       above and (msgflg&&amp;IPC_NOWAIT) is non-zero.

       EIDRM           The message queue identifier msgid is removed from  the

       EINTR           The msgsnd() function was interrupted by a signal.

       EINVAL          The value of msqid is not a valid message queue identi-
                       fier, or the value of mtype is less than 1.

                       The value of msgsz is less than 0 or greater  than  the
                       system-imposed limit.

       The msgsnd() function may fail if:

        EFAULT         The msgp argument points to an illegal address.

       The  value passed as the msgp argument should be converted to type void

       See attributes(5) for descriptions of the following attributes:

       tab()    allbox;    cw(2.750000i)|     cw(2.750000i)     lw(2.750000i)|
       lw(2.750000i).   ATTRIBUTE TYPEATTRIBUTE VALUE Interface StabilityStan-

       rctladm(1M), intro(2),  msgctl(2),  msgget(2),  msgrcv(2),  setrctl(2),
       sigaction(2), attributes(5), standards(5)

       The  maximum number of messages allowed on a message queue is the mini-
       mum enforced value of the process.max-msg-messages resource control  of
       the  creating  process  at  the time msgget(2) was used to allocate the

        See rctladm(1M) and setrctl(2) for information  about  using  resource

SunOS 5.10                        11 Feb 2003                        msgsnd(2)