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