Здравствуйте, 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.