Using Winsock2 the code sequence below returns -1 (failure) for select().
#include
#include
This is expected behavior. As mentioned all over the documentation, winsock's select function only works on sockets, and stdin is not a socket.
If you had called WSAGetLastError, you undoubtedly would have found that the cause was
WSAENOTSOCKOne of the descriptor sets contains an entry that is not a socket.
Try WSAEventSelect and WaitForMultipleObjectsEx; the latter can also wait on normal file handles as well as OVERLAPPED event objects from outstanding read operations on normal file handles.