boredaf Asked: 2021-11-27 18:42:41 +0800 CST2021-11-27 18:42:41 +0800 CST 2021-11-27 18:42:41 +0800 CST 当进程死于段错误时,套接字会发生什么? 772 想象一下,我有一个服务器,它有一个与远程客户端连接的 tcp 套接字。如果服务器因段错误而死机,操作系统是否会关闭套接字并通过 RST 通知客户端,或者客户端永远不会知道并且套接字在客户端和服务器计算机上保持打开状态? socket 1 个回答 Voted Best Answer user10489 2021-11-27T19:29:07+08:002021-11-27T19:29:07+08:00 如果进程在调试器中并且出现段错误,或者如果它捕获了段错误信号,从技术上讲,它不会死亡,并且套接字不会立即发生任何事情。 但是,如果进程真的死掉了,段错误情况并不是特别特殊,套接字的一端会关闭,就像进程以任何其他方式退出时一样,类似于 shutdown(2) 系统调用。 如果任何数据在套接字的内核缓冲区中,它将被允许耗尽。(但是,STDIO 缓冲区中未写入的数据可能会丢失。)套接字的远程端在读取最后一个数据后会看到一个 EOF,如果它试图写入套接字,它将接收一个 SIGPIPE 信号。
如果进程在调试器中并且出现段错误,或者如果它捕获了段错误信号,从技术上讲,它不会死亡,并且套接字不会立即发生任何事情。
但是,如果进程真的死掉了,段错误情况并不是特别特殊,套接字的一端会关闭,就像进程以任何其他方式退出时一样,类似于 shutdown(2) 系统调用。
如果任何数据在套接字的内核缓冲区中,它将被允许耗尽。(但是,STDIO 缓冲区中未写入的数据可能会丢失。)套接字的远程端在读取最后一个数据后会看到一个 EOF,如果它试图写入套接字,它将接收一个 SIGPIPE 信号。