#linux #ubuntu #c #arrays #exec
Вопрос:
Допустим, я хочу удалить что-то с помощью execv, но я еще не знаю, что удалить.
char *argv[] = {"rm", "-r"};
Теперь я знаю! Как мне добавить в argv? Как закончить его НУЛЕМ? Спасибо!
Ответ №1:
Если вы хотите вставить одно имя файла, фиксированное количество имен файлов или определенное максимальное количество имен файлов, вы можете статически определить и инициализировать массив указателей с нулевыми указателями в качестве заполнителей
/* placeholder for two file names and terminating NULL pointer */
char *argv[] = {"rm", "-r", NULL, NULL, NULL};
и замените NULL
указатель(указатели) в индексе 2 (и 3) одним или двумя именами файлов позже
char filename1[1024];
char filename2[1024];
/* input or construct filenames as strings somehow */
argv[2] = filename1;
argv[3] = filename2;
Если вам нужно обработать неизвестное количество имен файлов, возможно, вам придется динамически выделить массив указателей требуемого размера.