Вивчіть команду Linux - execv

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 []);

Опис функцій exec

Exec сімейство функцій замінює поточний образ процесу новим процесом зображення. Функції, описані на цій сторінці підручника, є зовнішніми для функції execve. (Див. Сторінка підручника execve, щоб дізнатися більше про заміну поточного процесу).

Початковим аргументом для цих функцій є шлях до файлу, який повинен бути виконаний.

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

Якщо якась з функцій exec повернеться, відбудеться помилка. Значення -1, яке повертається, і глобальну змінну errno буде встановлено.