我想将我的代码从linux移植到windows。它是这样的:
void SetNonBlocking( int filehandle )
{
    int fhFlags;
    fhFlags = fcntl(filehandle,F_GETFL);
    if (fhFlags < 0)
    {
        perror("fcntl(F_GETFL)");
        exit(1);
    }
    fhFlags |= O_NONBLOCK;
    if (fcntl(filehandle,F_SETFL,fhFlags) < 0)
    {   
        perror("fcntl(F_SETFL)");
        exit(1);
    } 
    return;
}
Run Code Online (Sandbox Code Playgroud)
现在我想在 Windows 中也有同样的东西。有任何想法吗?实际上,我的文件句柄是通过 WinApi 方法创建的管道的读取端CreatePipe。
Windows API 函数CreateNamedPipe有一个选项可以使句柄成为非阻塞的。(参见 MSDN)。另请参阅有关同步和重叠 I/O的 MSDN 文章。顺便说一句,您可以使用MinGW或Cygwin在 Windows 上直接编译 POSIX 兼容代码,从而避免移植的麻烦。