Hallo,
irgendwie benimmt sich mein sysctlnametomib() nicht so wie in der man page sysctl(3) beschrieben.
Bei mir liefert das folgende Testprogramm immer 1 zurück, egal was ich als Namen übergebe.
Damit kann natürlich auch das Beispiel aus der manpage nicht funktionieren.
Ist das normal?
irgendwie benimmt sich mein sysctlnametomib() nicht so wie in der man page sysctl(3) beschrieben.
The number of
elements in the mib array is given by the location specified by sizep
before the call, and that location gives the number of entries copied
after a successful call.
Bei mir liefert das folgende Testprogramm immer 1 zurück, egal was ich als Namen übergebe.
Code:
int main(int argc, char **argv) {
size_t len;
char *p;
int mib[100];
len = 100;
sysctlnametomib(argv[1], mib, &len);
printf("nametomib: len=%zu\n",len);
Damit kann natürlich auch das Beispiel aus der manpage nicht funktionieren.
Code:
/* Fill out the first three components of the mib */
len = 4;
sysctlnametomib("kern.proc.pid", mib, &len);
/* Fetch and print entries for pid's < 100 */
for (i = 0; i < 100; i++) {
mib[3] = i;
len = sizeof(kp);
if (sysctl(mib, 4, &kp, &len, NULL, 0) == -1)
perror("sysctl");
else if (len > 0)
printkproc(&kp);
}