以下示例列出了特定资源控制 task.max-lwps 的所有值-操作对。该示例的要点是 getrctl(2) 使用两个资源控制块,并返回 RCTL_NEXT 标志的资源控制块。要在所有的资源控制块中迭代,请使用 rcb_tmp rctl 块反复交换此处显示的资源控制块值。
rctlblk_t *rcb1, *rcb2, *rcb_tmp; ... /* Omit return value checking/error processing to keep code sample short */ rcb1 = calloc(1, rctlblk_size()); /* rctl blocks are opaque: */ /* "rctlblk_t rcb" does not work */ rcb2 = calloc(1, rctlblk_size()); getrctl("task.max-lwps", NULL, rcb1, RCTL_FIRST); while (1) { print_rctl(rcb1); rcb_tmp = rcb2; rcb2 = rcb1; rcb1 = rcb_tmp; /* swap rcb1 with rcb2 */ if (getrctl("task.max-lwps", rcb2, rcb1, RCTL_NEXT) == -1) { if (errno == ENOENT) { break; } else { perror("getrctl"); exit (1); } } }