所以我需要关闭一个特定的连接,但问题是另一个线程同时做一个select(),它将套接字作为它正在观察的文件描述符之一。
select()会优雅地终止,还是会发生什么不好?
答案 0 :(得分:0)
我不是百分百肯定,但如果你在select()
启动后关闭套接字,则不会发生任何不好的事情。如果您在开始时将已经已关闭的套接字传递给它,则select()
会返回错误(请参阅man page)。
此外,如果您使用select()
等待数据读取,它可能会将此已关闭的套接字报告为已准备好进行读取(因为读取不会在已关闭的套接字上阻止)。
您可以编写一个简单的程序,并实际检查系统上会发生什么。
答案 1 :(得分:0)