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