| Skip Navigation Links | |
| Exit Print View | |
![]() | man pages section 2: System Calls Oracle Solaris 11 Information Library |
- discover all message queue identifiers
#include <sys/msg.h>intmsgids(int *buf,uint_tnids,uint_t *pnids);
Themsgids() function copies all active message queue identifiers from the system intothe user-defined buffer specified bybuf, provided that the number of such identifiers isnot greater than the number of integers the buffer can contain, asspecified bynids. If the size of the buffer is insufficient to containall of the active message queue identifiers in the system, none are copied.
Whether or not the size of the buffer is sufficient to containall of them, the number of active message queue identifiers in the systemis copied into the unsigned integer pointed to bypnids.
Ifnids is 0 or less than the number of active message queueidentifiers in the system,buf is ignored.
Upon successful completion,msgids() returns0. Otherwise,-1 is returned anderrnois set to indicate the error.
Themsgids() function will fail if:
Thebuf orpnids argument points to an illegal address.
Themsgids() function returns a snapshot of all the active message queue identifiersin the system. More may be added and some may be removedbefore they can be used by the caller.
Example 1msgids() example
This is sample C code indicating how to use themsgids() function (seemsgsnap(2)):
voidexamine_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);}Seeattributes(5) for descriptions of the following attributes:
|
ipcrm(1),ipcs(1),Intro(2),msgctl(2),msgget(2),msgsnap(2),msgrcv(2),msgsnd(2),attributes(5)
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.Legal Notices | ![]() ![]() |