Win32 select/poll/eof/ANYTHING?

Используя стандартный API файлового ввода-вывода Win32 (CreateFile/ReadFile/etc), я пытаюсь ожидать файла для становления читаемым, или чтобы исключение произошло на файле. Если бы Windows имел достойную поддержку POSIX, то я мог бы просто сделать:

select(file_count, files_waiting_for_read, NULL, files_waiting_for_excpt, NULL, NULL);

И выбор возвратится, когда будет что-либо интересное на некоторых файлах. Windows не поддерживает выбор или опрос.Отлично. Я полагал, что мог взять файл и сделать что-то как:

while(eof(file_descriptor))
{
    Sleep(100);
}

Вышеупомянутый цикл вышел бы, когда больше данных доступно, чтобы быть считанным. Но нет, Windows не имеет эквивалента eof () также! Я мог возможно назвать ReadFile () на файле и определить, является ли это в eof тот путь. Но, затем я должен был бы обработать чтение в то время - я надеюсь просто смочь выяснить, что файл читаем, на самом деле не читая его.

Каковы мои опции?

5
задан Andrew 28 May 2010 в 03:02
поделиться

1 ответ

Windows имеет совершенно другую архитектуру для асинхронного ввода-вывода. Вам потребуется использовать перекрывающийся ввод-вывод с соответствующими портами завершения ввода-вывода или без них.

Обратите внимание, что в стандартном интерфейсе Winsock есть POSIX-подобная функция select () , но она работает только с сетевыми сокетами.

7
ответ дан 14 December 2019 в 04:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: