Когда send () вернет меньше аргумента длины?

При использовании блокирующих сокетов в Linux, есть ли причина, по которой send () возвращает меньше запрошенного, другое , чем прерванный, но частично успешный системный вызов send () ?

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

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

5
задан tshepang 7 June 2018 в 21:22
поделиться