两个进程通过套接字进行通信 - 进程 A 和进程 B。
进程 B 正在使用select()
调用来检查套接字何时准备就绪I/O.
进程 A 突然被杀死。B侧插座会发生什么。B 侧套接字会自动检测到 A 的套接字不再可用,select()
并将返回 -1 和EABDF
. ORselect()
通话将永远被阻止。
select()
返回并说套接字是可读的。当您读取套接字时,您将得到 -1(以及 errno 中的相应错误)或 0(EOF)。
Select 将解锁并且将返回错误情况或读取情况。
如果两侧之间没有心跳,则 tcp 套接字将保持半打开状态一段时间。最后 tcp 连接会超时,取决于超时设置。参考:http ://en.wikipedia.org/wiki/Half-open_connection