Exec семейство функций заменяет текущий образ процесса с новым процессом. Описанные здесь функции являются внешними для функции execve (2).
Начальным аргументом для этих функций является путь к файлу, который должен быть выполнен.
Const символ * Arg и последующие эллипсы в execl , функций имеют и execle функции можно рассматривать как arg0 , arg1 , …, АГРН . Вместе они описывают список из одного или нескольких указателей на строки с нулевым символом в конце, которые представляют список аргументов, доступных для исполняемой программы. Первый аргумент, по соглашению, должен указывать на имя файла, связанного с исполняемым файлом. Список аргументов должен заканчиваться указателем NULL .
Функции execv и execvp предоставляют массив указателей на строки с нулевым символом в конце, которые представляют список аргументов, доступных для новой программы. Первый аргумент, по соглашению, должен указывать на имя файла, связанного с исполняемым файлом. Массив указателей должен заканчиваться нулевым указателем.
Функция execle также определяет среду исполняемого процесса, следуя указателю NULL, который завершает список аргументов в списке параметров, или указателю на массив argv с дополнительным параметром. Этот дополнительный параметр является массивом указателей на строки с нулевым символом в конце и должен заканчиваться указателем NULL . Другие функции принимают окружение нового образа процесса из внешней переменной окружа в текущем процессе.
Некоторые из этих функций имеют особую семантику.
Функции execlp и execvp будут дублировать действия оболочки при поиске исполняемого файла, если указанное имя файла не содержит косую черту (/). Путь поиска — это путь, указанный в среде переменной PATH . Если эта переменная не указана, используется путь по умолчанию «: / bin: / usr / bin ». Кроме того, некоторые ошибки обрабатываются специально.
Если для файла отказано в разрешении (попытка execve вернула EACCES ), эти функции продолжат поиск по оставшейся части пути поиска. Если нет другого файла не найдено, однако, они вернутся с глобальной переменной Errno набора к EACCES .
Если заголовок файла не распознан (попытка execve вернула ENOEXEC ), эти функции будут выполнять оболочку с путем к файлу в качестве первого аргумента. (Если эта попытка не удалась, дальнейший поиск не производится.)
Возвращаемое значение
Если какая-либо из функций exec вернется, произойдет ошибка. Возвращаемое значение -1, и глобальная переменная errno будет установлена для указания ошибки.
Используйте команду man ( % man ), чтобы увидеть, как команда используется на вашем компьютере.
имя
execl, execlp, execle, execv, execvp — выполнить файл
конспект
#include <unistd.h>
внешний символ ** environment;
int execl (const char * path , const char * arg , …); int execlp (const char * file , const char * arg , …); int execle (const char * path , const char * arg , …, char * const envp []); int execv (const char * path , char * const argv []); int execvp (const char * file , char * const argv []);