【发布时间】:2021-10-13 15:57:36
【问题描述】:
app A和app B创建了Unix域数据报套接字,A调用connect连接B,所以A可以使用read和write 0r send和recv与B通信。但是如果B崩溃了,A 将在recv.B 重新启动时阻塞,向 A 发送消息会得到错误 1 操作不允许。有什么方法 A 可以检测到 B 崩溃了吗?
操作系统:Ubuntu 18.04 内核 4.18.0
【问题讨论】:
-
既然你有这个标签的linux,考虑使用
SOCK_SEQPACKET套接字而不是数据报。 -
不,没有办法区分已经崩溃的B和目前无话可说的B。
-
@n.1.8e9-where's-my-sharem。我怀疑有某种 kludge-on-a-kludge 解决方案使用
lsof-type 的方法来遍历/proc,看看 B 是否仍然有一个到 Unix 域套接字的开放套接字...
标签: c linux sockets ipc unix-socket