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

execl, execlp, execle, execv, execvp – выполнить файл

конспект

#include

extern char ** environment;

int execl (const char * путь , const char * arg , …);
int execlp (const char * файл , const char * arg , …);
int execle (const char * path , const char * arg , …, char * const envp []);
int execv (const char * путь , символ * const argv []);
int execvp (const char * файл , char * const argv []);

Описание функций exec

Семейство функций exec заменяет текущий образ процесса новым образом процесса. Функции, описанные на этой странице руководства, являются интерфейсом для функции execve (2). (См. Страницу руководства по execve для получения подробной информации о замене текущего процесса.)

Начальным аргументом для этих функций является путь к файлу, который должен быть выполнен.

Функции 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

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

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