Exec(2)
exec() - это наименование целого семейства функций: execv(), execl(), execle(), execve(), execlp() и execvp(). Все они превращают вызвавший процесс в другой. Отличия между функциями заключаются в способе представления аргументов. Например, функция execl() может быть вызвана следующим образом:
execl ("/bin/prog", "prog", arg1, arg2, (char*) 0);
Аргументы функции execl() имеют следующий смысл:
/bin/prog | Маршрутное имя нового выполняемого файла. |
prog | Имя, которое новый процесс получит как argv[0]. |
arg1, ... | Указатели на цепочки символов, содержащие аргументы программы prog. |
(char *) 0 | Пустая ссылка, отмечающая конец списка аргументов. |
Более подробная информация об этих функциях содержится в Справочнике программиста. Ключевым свойством функций семейства exec является то, что в случае их успешного завершения управление не возвращается, поскольку вызвавший процесс заменен новым. При этом новый процесс наследует у старого его идентификатор и другие характеристики. Если обращение к exec() завершается неудачей, управление возвращается в вызвавшую программу с результатом -1. Причина неудачи может быть установлена по значению переменной errno (см. ниже).