远程套接字上 select() 的行为已关闭(通过终止进程)

问题描述 投票:0回答:3

两个进程通过套接字进行通信 - 进程 A 和进程 B。

进程 B 正在使用

select()
调用来检查套接字何时准备好
I/O.

进程A突然被杀死。 B侧插座会发生什么情况。 B端socket会自动检测到A的socket不再可用并且

select()
将返回-1和
EABDF
。或者
select()
呼叫将永远保持阻塞状态。

c linux sockets posix-select
3个回答
2
投票

选择将解锁,并且将返回错误案例或读取案例。


2
投票

select()
返回并表示套接字可读。当你读取套接字时,你会得到-1(以及errno中相应的错误)或0(EOF)。


-1
投票

如果两端之间没有心跳,TCP套接字将保持半打开状态一段时间。 最后tcp连接会超时,取决于超时设置。 参考:http://en.wikipedia.org/wiki/Half-open_connection

© www.soinside.com 2019 - 2024. All rights reserved.