Книга: UNIX: разработка сетевых приложений
Прерванная функция connect
Прерванная функция connect
Что происходит, если наш вызов функции connect
на обычном блокируемом сокете прерывается, скажем, перехваченным сигналом, прежде чем завершится трехэтапное рукопожатие TCP? Если предположить, что функция connect
не перезапускается автоматически, то она возвращает ошибку EINTR
. Но мы не можем снова вызвать функцию connect, чтобы добиться завершения установления соединения. Это приведет к ошибке EADDRINUSE
.
Все, что требуется сделать в этом сценарии, — вызвать функцию select
, так, как мы делали в этом разделе для неблокируемой функции connect
. Тогда функция select
завершится, если соединение успешно устанавливается (делая сокет доступным для записи) или если попытка соединения неудачна (сокет становится доступен для чтения и для записи).
- 16.4. Неблокируемая функция connect: клиент времени и даты
- 2.1.3. Функция getopt_long()
- Системные переменные ROWS_AFFECTED, GDSCODE, SQLCODE, TRANSACTIONJD, CONNECTIONJD
- Группировка по встроенным функциям и UDF
- 19.1.1. Функция jQuery()
- CONNECTION TIMEOUT
- TCP connections
- UDP connections
- ICMP connections
- Default connections
- Untracked connections and the raw table
- Complex protocols and connection tracking