write()does not guarantee that all bytes will be written, so multiple calls will be required write(). From man write :
, count, , , RLIMIT_FSIZE (. setrlimit (2)), , . (. (7).)
write() , buffer , :
ssize_t total_bytes_written = 0;
while (total_bytes_written != 1024)
{
assert(total_bytes_written < 1024);
ssize_t bytes_written = write(tcp_socket,
&buffer[total_bytes_written],
1024 - total_bytes_written);
if (bytes_written == -1)
{
break;
}
total_bytes_written += bytes_written;
}