#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/sysctl.h> #include <string.h> int mib[CTL_MAXNAME]; //int mib[2]; size_t len; char *p; static int name2oid(const char *name, int *oidp); int main() { printf("SYSCTL\n"); mib[0] = 1; mib[1] = 1; sysctl(mib, 2, NULL, &len, NULL, 0); p = malloc(len); sysctl(mib, 2, p, &len, NULL, 0); printf("[%s]\n", p); mib[0] = 1; mib[1] = 10; sysctl(mib, 2, NULL, &len, NULL, 0); p = malloc(len); sysctl(mib, 2, p, &len, NULL, 0); printf("[%s]\n", p); mib[0] = 1; mib[1] = 2; sysctl(mib, 2, NULL, &len, NULL, 0); p = malloc(len); sysctl(mib, 2, p, &len, NULL, 0); printf("[%s]\n", p); mib[0] = 1; mib[1] = 4; sysctl(mib, 2, NULL, &len, NULL, 0); p = malloc(len); sysctl(mib, 2, p, &len, NULL, 0); printf("[%s]\n", p); mib[0] = 6; mib[1] = 1; sysctl(mib, 2, NULL, &len, NULL, 0); p = malloc(len); sysctl(mib, 2, p, &len, NULL, 0); printf("[%s]\n", p); size_t j; j = name2oid("vm.overcommit", mib); printf("j:[%i]\n", j); for (int i = 0; i < j; i++) printf("[%i]", mib[i]); printf("\n"); } static int name2oid(const char *name, int *oidp) { int oid[2]; int i; size_t j; oid[0] = 0; oid[1] = 3; j = CTL_MAXNAME * sizeof(int); i = sysctl(oid, 2, oidp, &j, name, strlen(name)); if (i < 0) return (i); j /= sizeof(int); return (j); }