Операционная система UNIX. Руководство программиста

       

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 (см. ниже).



Содержание раздела