unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

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



System Calls                                            msgids(2)



NAME
     msgids - discover all message queue identifiers

SYNOPSIS
     #include <sys/msg.h>

     int msgids(int *buf, uint_t nids, uint_t  *pnids);

DESCRIPTION
     The msgids() function copies all active message queue  iden-
     tifiers  from the system into the user-defined buffer speci-
     fied by buf, provided that the number of such identifiers is
     not  greater than the number of integers the buffer can con-
     tain, as specified by nids.  If the size of  the  buffer  is
     insufficient  to  contain  all  of  the active message queue
     identifiers in the system, none are copied.

     Whether or not the size of the buffer is sufficient to  con-
     tain  all  of them, the number of active message queue iden-
     tifiers in the system is copied into  the  unsigned  integer
     pointed to by pnids.

     If nids is 0 or less than the number of active message queue
     identifiers in the system, buf is ignored.

RETURN VALUES
     Upon successful completion, msgids() returns 0.   Otherwise,
     -1 is returned and errno is set to indicate the error.

ERRORS
     The msgids() function will fail if:

     EFAULT
           The  buf  or  pnids  argument  points  to  an  illegal
           address.

USAGE
     The msgids() function returns a snapshot of all  the  active
     message  queue identifiers in the system.  More may be added
     and some may be removed before  they  can  be  used  by  the
     caller.

EXAMPLES
     Example 1: msgids() example

     This is sample C code indicating how  to  use  the  msgids()
     function (see msgsnap(2)):

     void
     examine_queues()
     {
          int *ids = NULL;



SunOS 5.9            Last change: 8 Mar 2000                    1






System Calls                                            msgids(2)



          uint_t nids = 0;
          uint_t n;
          int i;

          for (;;) {
               if (msgids(ids, nids, &n) != 0) {
                    perror("msgids");
                    exit(1);
               }
               if (n <= nids)     /* we got them all */
                    break;
               /* we need a bigger buffer */
               ids = realloc(ids, (nids = n) * sizeof (int));
          }

          for (i = 0; i < n; i++)
               process_msgid(ids[i]);

          free(ids);
     }

ATTRIBUTES
     See attributes(5) for descriptions of the  following  attri-
     butes:

     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | MT-Level                    | Async-Signal-Safe           |
    |_____________________________|_____________________________|


SEE ALSO
     ipcrm(1),   ipcs(1),   intro(2),    msgctl(2),    msgget(2),
     msgsnap(2), msgrcv(2), msgsnd(2), attributes(5)




















SunOS 5.9            Last change: 8 Mar 2000                    2