I want to port my code from linux to windows. It is something like this:
void SetNonBlocking( int filehandle )
{
int fhFlags;
fhFlags = fcntl(fileha
Like this:
ulong arg = 1;
ioctlsocket(sock, FIONBIO, &arg);
FIONBIO
sets the socket in non-blocking mode. Though you should also use OVERLAPPED io as Will suggests. But overlapping and non-blocking is not the same thing.
The Windows API function CreateNamedPipe
has an option to make the handle non-blocking. (See MSDN). Also see the MSDN article on Synchronous and Overlapped I/O. BTW, you can directly compile POSIX compliant code on Windows using MinGW or Cygwin and thus avoid the headache of porting.
The term for non-blocking / asynchronous I/O in Windows is 'overlapped' - that's what you should be looking at.
Basically, you identify a file handle as using overlapped i/o when you open it, and then pass an OVERLAPPED structure into all the read and write calls. The OVERLAPPED structure contains an event handle which can be signalled when the I/O completes.