Ниже приведен фрагмент кода C / Obj-C, который использует sysctl для получения argv определенного процесса с PID 50.
...
int getProcessArgs[3] = { CTL_KERN, KERN_PROCARGS, 50 };
sysctl(getProcessArgs, 3, NULL, &length, NULL, 0);
char* processArgs = malloc(length * sizeof(char));
sysctl(getProcessArgs, 3, processArgs, &length, NULL, 0);
...
Первый вызов sysctl (для определения размера строкового массива argv) завершается успешно. Возвращенная длина ~ 1600, больше, чем я ожидал, но я полагаю, что это необоснованно. Маллок добивается успеха. Второй вызов sysctl возвращает -1, устанавливая errno равным 22, E_INVAL.
Я посмотрел другой код, в том числе из этот вопрос , но не вижу проблемы с моим. Чего мне не хватает?