Изучите команду Linux – execl

Имя: execl, execlp, execle, execv, execvp – выполнить файл.

 #include 
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 char * arg и последующие эллипсы в функциях execl , execlp и execle можно рассматривать как arg0 , arg1 , …, argn . Вместе они описывают список из одного или нескольких указателей на строки с нулевым символом в конце, которые представляют список аргументов, доступных для исполняемой программы. Первый аргумент, по соглашению, должен указывать на имя файла, связанного с исполняемым файлом. Список аргументов должен завершаться указателем NULL .

Функции execv и execvp предоставляют массив указателей на строки с нулевым символом в конце, которые представляют список аргументов, доступных для новой программы. Первый аргумент, по соглашению, должен указывать на имя файла, связанного с исполняемым файлом. Массив указателей должен заканчиваться указателем NULL .

Функция execle также определяет среду исполняемого процесса, следуя указателю NULL , который завершает список аргументов в списке параметров или указатель на массив argv с дополнительным параметр. Этот дополнительный параметр является массивом указателей на строки с нулевым символом в конце, и должен завершаться указателем NULL . Другие функции извлекают среду для нового образа процесса из внешней переменной environment в текущем процессе.

Функции со специальной семантикой

Функции execlp и execvp будут дублировать действия оболочки при поиске исполняемого файла, если указанное имя файла не содержит символ косой черты (/). Путь поиска – это путь, указанный в среде переменной PATH . Если эта переменная не указана, используется путь по умолчанию “:/bin:/usr/bin ”. Кроме того, некоторые ошибки обрабатываются специально.

Если для файла отказано в разрешении (попытка execve вернула EACCES ), эти функции продолжат поиск по оставшейся части пути поиска. Однако если другой файл не найден, он вернется с глобальной переменной errno , для которой установлено значение EACCES .

Если заголовок файла не распознан (попытка execve вернула ENOEXEC ), эти функции будут выполнять оболочку с путем к файлу в качестве первого аргумента. (Если эта попытка не удалась, дальнейший поиск не производится.)

Возвращаемое значение

Если какая-либо из функций exec вернется, произойдет ошибка. Возвращаемое значение равно -1, и глобальная переменная errno будет установлена ​​для указания ошибки.

Оцените статью
Solutics.ru
Добавить комментарий