Listing 3

func()
{
   int msqid, msglen;
   char string[80];
   struct mssg {
       long mtype;
       char mtext [BUFSIZ];
   } msgbuf;

   /* Prompt user for a message to send */
   printf("Enter message: ");
   gets(msgbuf.mtext);

   /* Prompt user for a message type */
   printf("Enter message type: ");
   gets(string);
   sscanf(string,"%ld",&(msgbuf.mtype));

   /* Set the message length */
   msglen=strlen(msgbuf.mtext);

   /* Send the message. The kernel will put
    * the process to sleep if the message queue
    * is full.
   */
   if (msgsnd(msqid, &msgbuf, msglen, 0) == -1)  {
       /* The perror(3C) function prints the
        * text of the error number contained
        * in the external integer errno.
       */
       perror("msgsnd() failed: ");
       exit(1);
   }
}