Книга: UNIX: разработка сетевых приложений
Глава 16
Глава 16
16.1. Дескриптор используется совместно родительским и дочерним процессами, поэтому его счетчик ссылок равен 2. Если родительский процесс вызывает функцию close
, счетчик ссылок уменьшается с 2 до 1, и пока он больше нуля, сегмент FIN не посылается. Еще одна цель вызова функции shutdown
— послать сегмент FIN, даже если дескриптор больше нуля.
16.2. Родительский процесс продолжит запись в сокет, получивший сегмент FIN, а первый сегмент, посланный серверу, вызовет получение сегмента RST в ответ. После этого функция write
пошлет родительскому процессу сигнал SIGPIPE
, как показано в разделе 5.12.
16.3. Когда дочерний процесс вызывает функцию getppid
для отправки сигнала SIGTERM
, возвращаемый идентификатор процесса будет равен 1. Это указывает на процесс init
, наследующий все продолжающие работать дочерние процессы, родительские процессы которых завершились. Дочерний процесс будет пытаться послать сигнал процессу init
, не имея необходимых прав доступа. Но если не исключается, что данный клиент будет запущен с правами привилегированного пользователя, позволяющими посылать сигналы процессу init
, то возвращенное функцией getppid
значение должно быть проверено перед отправкой сигнала.
16.4. Если удалить эти две строки, вызывается функция select
. Но функция select
немедленно завершится, поскольку соединение установлено и сокет открыт для записи. Эта проверка и оператор goto
предотвращают ненужный вызов функции select
.
16.5. Это может случиться, если сервер отправляет данные сразу, как только завершается его функция accept
, и если узел клиента занят, когда приходит второй пакет трехэтапного рукопожатия для завершения соединения со стороны клиента (см. рис. 2.5). SMTP-серверы, например, немедленно отсылают клиенту сообщение по новому соединению, прежде чем произвести из него считывание.
- 6.3.2. Процедура сбора качественных данных
- Глава 2 Табличный редактор Microsoft Excel
- «Плиточные» структуры и квазикристаллы
- 16.13 Формат сообщений MIME
- Как уразуметь свою техническую роль и придерживаться ее
- Отправка запроса
- Build a Run-Time Image for an OS Design
- Как отвечать на письма, полученные вашей организацией
- 5.1.1. Создание трехмерной модели радиатора
- Привязка к процессорам
- Клонирование по сетке ("Copy to Grid")
- Программирование для Linux. Профессиональный подход