Книга: 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-серверы, например, немедленно отсылают клиенту сообщение по новому соединению, прежде чем произвести из него считывание.
- Общественное мнение и этические вопросы в прямом маркетинге
- 8.3 Writing HTML
- Концепция «Путь Samsung» как основа конкурентоспособности корпорации
- Когда использовать невидимый Интернет
- Вычислимость в классической физике: где мы находимся?
- Создание содержимого уровня блока:
- Глава 18. Извлекайте уроки из всех своих разработок
- Управление значениями
- Расширение полномочий потребителей
- 24.4. Проблемы с установкой программ
- Шаг 2: Проведите логическую группировку для сравнения
- Ввод учетных данных пользователя