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;
          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)


Man(1) output converted with man2html