Using the standard Win32 file I/O API's (CreateFile/ReadFile/etc), I'm trying to wait for a file to become readable, or for an exception to occur on the file. If Windows had any decent POSIX support, I could just do:
select(file_count, files_waiting_for_read, NULL, files_waiting_for_excpt, NULL, NULL);
And select will return when there's anything interesting on some of the files. Windows doesn't support select or poll. Fine. I figured I could take the file and do something like:
while(eof(file_descriptor))
{
Sleep(100);
}
The above loop would exit when more data is available to be read. But nope, Windows doesn't have an equivalent of eof() either! I could possibly call ReadFile() on the file, and determine if it's at the eof that way. But, then I'd have to handle the reading at that point in time -- I'm hoping to simply be able to figure out that a file is readable, without actually reading it.
What are my options?
Windows has a completely different architecture for asynchronous I/O. You will need to use overlapped I/O with or without the related I/O completion ports.
Note that the standard Winsock interface does have a POSIX-like select()
function, but that only works with network sockets.
I am answering six year later here goes anyway: I found WSAPoll similar to *nix poll. Here link to MSDN: https://msdn.microsoft.com/en-us/library/windows/desktop/ms741669(v=vs.85).aspx Iwas added to Vista and later versions and works with sockets.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With