重要功能就是声明一个管道,将其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
没错。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
没错。CreatePipe可以创建一个管道
#5
fcntl(s_fdpRead, F_SETFL, O_NONBLOCK);
这句的意思是说 将管道设置成异步模式。
在Windows下如果要使用异步管道, 需要使用 重叠IO, 没有这种直接的设置方式
#6
上面说错了, 是非阻塞模式, 就是没读完就可以马上返回
#7
晕,我以为是socket呢,是管道啊,up楼上。
#8
多谢