Re[2]: Непонятная ошибка при закрытии дескриптора файла
От: Zhendos  
Дата: 28.09.14 15:34
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, skl, Вы писали:


skl>>2) Я понимаю, что это скорее сишный код в методе, но я не знаю как с помощью файловых потоков С++ задать неблокируемый режим для файла на чтение (т. е. флаг O_NONBLOCK). Буду благодарен за подсказку как это сделать при помощи файловых потоков С++.


CS>Ты зовешь read() и не дожидаясь его завершения — close() и более того разрушаешь буффер. понятно что упадет где-нибудь.


CS>Мне кажется тв не понимаешь как работатет O_NONBLOCK — т.е. не блокирующий IO


CS>http://www.kegel.com/dkftpbench/nonblocking.html



Вы точно в этом уверены? неблокирующий read, это не async, указатель никуда не копируется
и в фоне никакие IO операции не производятся.

Он(read) просто скопирует в буфер то, что есть в буфере ОС и отдаст управление,
после этого с буфером можно делать что угодно. И файл можно без проблем закрыть.

PS
Хотя код конечно странно выглядит, взять хотя бы ручную реализацию std::fill/memset
перед read.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.