Я новичок в CМоя конечная цель - создать модуль Apache, который возвращает crontab учетной записи пользователя Apache в формате JSON.
Сначала все шаги Baby.Я успешно следовал учебным пособиям в двух следующих местах, чтобы вывести «hello world» и его варианты из модуля Apache (и у меня фактически есть книга Ника Кью):
Я немного изменил примеры для вывода JSON следующим образом:
ap_rputs("{'hello': {'to': 'world', 'from': '?'}}", r);
Я хотел бы заменить '?'выше с выводом команды whoami системы Linux (в конце концов я хочу запустить команду linux 'crontab -lu username').Как новичок в C, хотя я ошеломлен выбором того, как это сделать, я попробовал несколько вещей, и, похоже, не был близок к тому, чтобы что-то сделать правильно.Кажется, я могу перехватить вывод whoami, или, по крайней мере, мой код компилируется и запускается;)
FILE *sysp = popen("whoami","r");
Но я даже правильно делаю выше?И что является хорошим следующим шагом?Я подумал, что мог бы попытаться определить длину вывода сверху, затем создать массив символов той же длины, перемотать дескриптор файла и захватить вывод.Но я, кажется, не получаю длину должным образом, и, возможно, это неоптимальный подход?Когда я запускаю следующее (я пропустил пару строк, которые, как я знаю, могут понадобиться, например, перемотка назад, fclose), я получаю -1:
fseek(sysp, 0L, SEEK_END);
long len = ftell(sysp);
char buf[2];
sprintf(buf, "%d", (int)len);
ap_rputs(buf, r);
Любые указатели относительно того, какБыл бы признателен лучший подход к выводу результата из системной команды whoami.