Добрый день! В широко известной книге Стивенса "UNIX разработка сетевых приложений", есть следующий код: 01: ssize_t writen(int fd, const void *vptr, size_t n) 02: { 03: size_t nleft; 04: ssize_t nwritten; 05: const char *ptr; 06: 07: ptr = vptr; 08: nleft = n; 09: while(nleft > 0) { 10: if((nwritten = write(fd, ptr, nleft)) <= 0) { 11: if(errno == EINTR) nwritten = 0; 12: else return -1; 13: } 14: nleft -= nwritten; 15: ptr += nwritten; 16: } 17: return n; 18: } Мой вопрос касается строки под номером 10. Представим себе ситуацию, когда узел закрывает сокет. Тогда write() вернет 0 и дальнейшее поведение программы будет зависеть от значения errno, которое может оказаться любым. Т.к. ошибка в книжке маловероятна, хотелось бы, чтобы знающие люди подсказали где ошибка в моих рассуждениях.

Ответ на:
комментарий
от klalafuda

Ответ на:
комментарий
от syomin

Ответ на:
комментарий
от klalafuda

Ответ на:
комментарий
от syomin

Ответ на:
комментарий
от klalafuda

Ответ на:
комментарий
от syomin

Ответ на:
комментарий
от klalafuda

Ответ на:
комментарий
от syomin

Ответ на:
комментарий
от klalafuda

Ответ на:
комментарий
от syomin

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Консольный обмен сообщениями (2017)
- Форум Сокеты: segfault при копировании char* в std::string (2014)
- Форум Вывести содержание бинарного файла (2013)
- Форум C++[RAII], c network, recv неоправданный интервал (2008)
- Форум Реализация системного вызова ? (2008)
- Форум Использование массивов в системном вызове read ( ) (2016)
- Форум FUSE (2013)
- Форум Исследование CryEngine 2 SDK 1.4.0 (2012)
- Форум Как узнать, сколько памяти доступно для выделения? (2005)
- Форум Самописный dd не пишет в /dev/mtd (2010)