读书人

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

发布时间: 2012-04-09 13:41:24 作者: rapoo

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

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

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

读书人网 >C语言

热点推荐