windows中用什么替代fcntl函数啊

时间:2022-04-27 19:09:40
有个linux程序需要转到wince下面,其中的fcntl函数不知道用什么函数来替换掉。
重要功能就是声明一个管道,将其fd[0]读端设为无阻塞的,这个功能在我windows中怎么实现呀
就是下面这段在windows中如何替换:

    int ret;
    int filedes[2];

    ret = pipe(filedes);
    if (ret < 0) {
        LOGE("Error in pipe() errno:%d", errno);
        return NULL;
    }

    s_fdRead = filedes[0];
    s_fdWrite = filedes[1];

    fcntl(s_fdpRead, F_SETFL, O_NONBLOCK);

请赐教。

8 个解决方案

#1


去看看MSDN;貌似CAsyncSocket异步连接

#2


setsockopt函数可以用,可以查一下msdn这个函数的具体参数可选项。

#3


SetNamedPipeHandleState传入参数PIPE_WAIT/PIPE_NOWAIT

#4


引用 3 楼 togoblime 的回复:
SetNamedPipeHandleState传入参数PIPE_WAIT/PIPE_NOWAIT

没错。CreatePipe可以创建一个管道

#5



fcntl(s_fdpRead, F_SETFL, O_NONBLOCK); 


这句的意思是说 将管道设置成异步模式。

在Windows下如果要使用异步管道, 需要使用 重叠IO, 没有这种直接的设置方式

#6


上面说错了, 是非阻塞模式,  就是没读完就可以马上返回

#7


晕,我以为是socket呢,是管道啊,up楼上。

#8


多谢

#1


去看看MSDN;貌似CAsyncSocket异步连接

#2


setsockopt函数可以用,可以查一下msdn这个函数的具体参数可选项。

#3


SetNamedPipeHandleState传入参数PIPE_WAIT/PIPE_NOWAIT

#4


引用 3 楼 togoblime 的回复:
SetNamedPipeHandleState传入参数PIPE_WAIT/PIPE_NOWAIT

没错。CreatePipe可以创建一个管道

#5



fcntl(s_fdpRead, F_SETFL, O_NONBLOCK); 


这句的意思是说 将管道设置成异步模式。

在Windows下如果要使用异步管道, 需要使用 重叠IO, 没有这种直接的设置方式

#6


上面说错了, 是非阻塞模式,  就是没读完就可以马上返回

#7


晕,我以为是socket呢,是管道啊,up楼上。

#8


多谢