Основы многозадачности в Linux



бет11/15
Дата16.11.2022
өлшемі472,04 Kb.
#158456
1   ...   7   8   9   10   11   12   13   14   15
Байланысты:
5-6 лаб раб (1)

Семейство exec()
В стандартной библиотеке языка C есть пять дополнительных функций, которые реализованы с использованием execve() и вместе называются семейством exec().
Все функции семейства exec() объявлены в заголовочном файле unistd.h следующим образом:
int execl (const char * PATH, const char * ARG, ...);
int execle (const char * PATH, const char * ARG, ...,
const char ** ENVP);
int execlp (const char * FILE, const char * ARG, ...);
int execv (const char * PATH, const char ** ARGV);
int execvp (const char * FILE, const char ** ARGV);
Системный вызов execve() является "лидером" и полноправным членом семейства exec(). Напомним еще раз его прототип:
int execve (const char * PATH, const char ** ARGV,
const char ** ENVP);
Рассмотрев внимательно объявления всех функций семейства exec(), можно составить следующий универсальный шаблон:
execX[Y] (...);
Таким образом, имя функции формируется добавлением к префиксу exec обязательного X и произвольного Y. В качестве X могут выступать символы l и v (без кавычек), а Y может принимать значения e и p. Осталось только узнать, что означают эти символы. Их назначение приведено в табл. 10.1.
Таблица 10.1. Назначение символов в имени exec()




Рассмотрим поочередно каждую функцию семейства exec(), реализуя фактически одну и ту же программу, которая будет запускать программу ls для подробного просмотра корневого каталога. В командной оболочке мы запустили бы такую команду следующим образом:




Начнем с уже изученного нами системного вызова execve(), который является "главой семейства". Напишем программу (листинг 10.10), которая при помощи execve() запускает ls с указанными ранее аргументами в отдельном процессе.


Листинг 10.10. Программа execvels.c



Теперь реализуем ту же программу на основе execl() (листинг 10.11).


Достарыңызбен бөлісу:
1   ...   7   8   9   10   11   12   13   14   15




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет