Linux Exec - руководство по выполнению команд в Linux
В Linux команда `exec` используется для выполнения новой программы в текущем процессе. Она заменяет текущий образ процесса новым образом, без создания нового процесса. Программа, которая вызывает `exec`, перестает существовать, а контроль передается новому образу процесса.
Для использования команды `exec`, необходимо включить заголовочный файл `
c
#include
int execvp(const char *file, char *const argv[]);
В приведенном примере команда `execvp` принимает два аргумента: `file` - путь к исполняемому файлу программы, которую мы хотим выполнить, и `argv` - массив аргументов программы.
Вот пример, который показывает, как использовать команду `execvp` для выполнения программы `ls` с некоторыми аргументами:
c
#include
#include
int main() {
char *args[] = {"ls", "-l", NULL};
execvp("ls", args);
printf("This line will not be executed\n");
return 0;
}
В этом примере мы создаем массив `args`, в котором первый элемент - имя программы, которую мы хотим выполнить (`ls`), а последующие элементы - аргументы программы (`-l`). Мы передаем этот массив в команду `execvp`, которая заменяет текущий процесс образом программы `ls` соответствующими аргументами. Обратите внимание, что любой код за вызовом `execvp` не будет выполнен, поскольку команда заменяет образ процесса.
Этот пример продемонстрирует, как использовать команду `execvp`, но есть и другие варианты команды `exec`, такие как `execv`, `execle` и т. д., которые могут быть использованы в зависимости от ваших потребностей.
Вот пример использования команды `execlp`, которая принимает список аргументов в виде отдельных аргументов функции `exec`
c
#include
#include
int main() {
execvp("ls", "ls", "-l", NULL);
printf("This line will not be executed\n");
return 0;
}
Обратите внимание, что последний аргумент `NULL` или `0` указывает на конец массива аргументов.
Однако, следует быть осторожным при использовании команды `exec`, так как после вызова `exec`, текущая программа будет полностью заменена новой программой, и все несохраненные изменения будут потеряны.