При использовании блокирующих сокетов в Linux, есть ли причина, по которой send ()
возвращает меньше запрошенного, другое , чем прерванный, но частично успешный системный вызов send ()
?
Я знаю, что это, возможно, очень определено реализацией, и что, вероятно, было бы очень опасно полагаться на это поведение vior даже без установленных обработчиков сигналов (и, следовательно, причин прерывания системных вызовов). Я, вероятно, буду перебирать вызов send до завершения; однако, если бы по этому поводу было официальное слово, я бы смог этого избежать.
Почему предполагается, что при отправке через блокирующий сокет передается меньше запрошенных данных? задавал тот же вопрос, но с неубедительными результатами: прерванные системные вызовы упоминаются в качестве примера для короткого подсчета возврата, но это до сих пор неясно, вызовет ли полный буфер отправки TCP частичную отправку или send ()
просто заблокируется, пока в буфере не останется достаточно места.