首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

linux下select用阻塞的情况怎么返回

2012-04-09 
linux下select用阻塞的情况如何返回?就是说我在select最后一个参数为NULL,即不设超时,变成了阻塞地等待,但

linux下select用阻塞的情况如何返回?
就是说我在select最后一个参数为NULL,即不设超时,变成了阻塞地等待,但我发现自己创建的SOCKET自己把它CLOSE掉时,那个正在阻塞的SELECT模型并不会返回,一直阻塞着,有什么方式让这个SELECT模型在阻塞的时候返回呢?

[解决办法]
既然select已经阻塞了,它就不会返回,除非有信号.你要非得让它返回的话就用信号吧.
不过一般用select时都不会设为阻塞,因为你设为阻塞不是跟没用select一样吗?recv本身也是阻塞的,而且主动close套接字时还会返回0,可以判断.
[解决办法]
用shutdown试试,close只是减少句柄的一个引用,当引用计数为0时会调用shutdown,即真正的关闭
[解决办法]

C/C++ code
那就设置超时啊,你矛盾啥?
[解决办法]
老大什么的最麻烦了,哈哈
[解决办法]
信号~~~~

热点排行