LINUX.ORG.RU

close после write в сетевой сокет

 ,


0

3

Что будет, если сделать запись в сокет и сразу закрыть его

write(fd, buf, buf_size);
close(fd);
При записи (write()) данные копируются в буфер ядра (не отправляются по сети). Что произойдет при вызове close()?

  • он вернется сразу, а ядро сначала передаст остаток буфера по сети, затем отправит fin
  • подождет, пока ядро передаст данные, затем отправит fin и вернется,
  • отбросит данные в буфере, сразу отправит fin и завершит вызов close()

P.S. Насколько я понимаю, блокирующий сокет или нет никакой разницы при записи не будет (write() по любому вернется сразу, скопировав максимально возможное количество данных в ядерный буфер, а close() так вообще безразлична блокируемость сокета).

пиши код, дебаж код. или не умеешь?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.