Шрифт:
Эти функции возвращают вызывающему процессу значение -1, только если происходит ошибка. Иначе управление передается в начало новой программы, обычно функции
Отношения между этими шестью функциями показаны на рис. 4.4. Обычно только функция
Рис. 4.4. Отношения между шестью функциями exec
Отметим различия между этими функциями:
1. Три верхних функции (см. рис. 4.4) принимают каждую строку как отдельный аргумент, причем перечень аргументов завершается пустым указателем (так как их количество может быть различным). У трех нижних функций имеется массив
2. Две функции в левой колонке получают аргумент
3. Четыре функции в двух левых колонках не получают явного списка переменных окружения. Вместо этого с помощью текущего значения внешней переменной
Дескрипторы, открытые в процессе перед вызовом функции
4.8. Параллельные серверы
Сервер, представленный в листинге 4.2, является последовательным (итеративным) сервером. Для такого простого сервера, как сервер времени и даты, это допустимо. Но когда обработка запроса клиента занимает больше времени, мы не можем связывать один сервер с одним клиентом, поскольку нам хотелось бы обрабатывать множество клиентов одновременно. Простейшим способом написать параллельный сервер под Unix является вызов функции
Листинг 4.3. Типичный параллельный сервер
Когда соединение установлено, функция