Re[5]: Socket успешно прочитал 0 байт :( проблемы
От: Aquilaware  
Дата: 21.05.20 08:44
Оценка:
Здравствуйте, Marty, Вы писали:

M>Не. Должна вернуть ошибку, а errno будет EINTR


Как-то так, но EINTR это даже не ошибка, а призыв повторить системный вызов, потому что он был прерван по какой-либо причине:

Many system calls will report the EINTR error code if a signal occurred while the system call was in progress. No error actually occurred, it's just reported that way because the system isn't able to resume the system call automatically.

здесь

В случае Unix, одной из причин может стать сигнал. Но я видел достаточно встраиваемых сетевых стеков, там где никаких сигналов даже нет, но поведение операции чтения из TCP сокета такое же, естественно без EINTR, а просто 0 в результате. Следующие попытки чтения успешны, сокет не разрывается, просто вот в силу причин иногда проскакивает 0. Windows — то же самое.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.