Шрифт:
4.7. Функции fork и exec
Прежде чем рассматривать создание параллельного сервера (что мы сделаем в следующем разделе), необходимо описать функцию Unix
Если вы никогда не встречались с этой функцией, трудным для понимания может оказаться то, что она вызывается один раз, а возвращает два значения. Одно значение эта функция возвращает в вызывающем процессе (который называется родительским процессом) — этим значением является идентификатор созданного процесса (который называется дочерним процессом). Второе значение (нуль) она возвращает в дочернем процессе. Следовательно, по возвращаемому значению можно определить, является ли данный процесс родительским или дочерним.
Причина того, что функция
Все дескрипторы, открытые в родительском процессе перед вызовом функции
Существует два типичных случая применения функции
1. Процесс создает свои копии таким образом, что каждая из них может обрабатывать одно задание. Это типичная ситуация для сетевых серверов. Далее в тексте вы увидите множество подобных примеров.
2. Процесс хочет запустить другую программу. Поскольку единственный способ создать новый процесс — это вызвать функцию
Единственный способ запустить в Unix на выполнение какой-либо файл — вызвать функцию
В старых описаниях и книгах новая программа ошибочно называется «новым процессом». Это неверно, поскольку новый процесс не создается.
Различие между шестью функциями
выполняемый программный файл может быть задан или именем файла( filename), или полным именем( pathname);
аргументы новой программы либо перечисляются один за другим, либо на них имеется ссылка через массив указателей;
новой программе либо передается окружение вызывающего процесса, либо задается новое окружение.