Unix 关闭套接字并选择()
所以我需要关闭一个特定的连接,但问题是另一个线程正在同时执行select(),它将套接字作为它正在监视的文件描述符之一Unix 关闭套接字并选择(),unix,sockets,Unix,Sockets,所以我需要关闭一个特定的连接,但问题是另一个线程正在同时执行select(),它将套接字作为它正在监视的文件描述符之一 select()是否会正常终止,或者是否会发生任何不好的情况?我不是100%确定,但如果在select()启动后关闭套接字,则不会发生任何不好的情况选择()将返回一个错误,如果您将已关闭的套接字传递给它(请参阅) 另外,如果您使用select()等待数据读取,它可能会报告此已关闭的套接字已准备好读取(因为读取不会阻止已关闭的套接字) 您可以编写一个简单的程序,并实际检查系统上会
select()是否会正常终止,或者是否会发生任何不好的情况?我不是100%确定,但如果在
select()启动后关闭套接字,则不会发生任何不好的情况<代码>选择()
将返回一个错误,如果您将已关闭的套接字传递给它(请参阅)
另外,如果您使用select()
等待数据读取,它可能会报告此已关闭的套接字已准备好读取(因为读取不会阻止已关闭的套接字)
您可以编写一个简单的程序,并实际检查系统上会发生什么情况。我不是100%确定,但如果在启动
select()
后关闭套接字,则不会发生什么不好的情况<代码>选择()将返回一个错误,如果您将已关闭的套接字传递给它(请参阅)
另外,如果您使用select()
等待数据读取,它可能会报告此已关闭的套接字已准备好读取(因为读取不会阻止已关闭的套接字)
您可以编写一个简单的程序,并实际检查您的系统将发生什么情况。查看我对几乎相同问题的答案:
简短回答:让您的select call wait位于两个文件句柄上:套接字和管道的读取端。查看我对几乎相同问题的答案: 简短回答:让您的select调用在两个文件句柄上等待:套接字和管道的读取端。Dup。还有杜普。和