Насколько я понимаю, блокирующая отправка не обязательно должна быть атомарной, см., Например, страницу руководства Solaris send :
For socket types such as SOCK_DGRAM and SOCK_RAW that require atomic messages,
the error EMSGSIZE is returned and the message is not transmitted when it is
too long to pass atomically through the underlying protocol. The same
restrictions do not apply to SOCK_STREAM sockets.
А также посмотрите на код ошибки EINTR:
The operation was interrupted by delivery of a signal before any data could
be buffered to be sent.
Это означает, что отправка может быть прервана после того, как некоторые данные были буферизированы для отправки, но в этом случае send вернет количество байтов, которые уже были буферизованы для отправки (вместо кода ошибки EINTR). *
На практике я ожидал бы увидеть такое поведение только для больших сообщений (которые не могут быть обработаны атомарно атомной системой) в сокетах SOCK_STREAM.