核心内容摘要
Spring-boot3.4最新版整合swagger和Mybatis-plus
针对 SIGPIPE 导致 server 进程崩溃的问题:原因分析 在 Linux 网络编程中当向一个已关闭的 socket 发送数据时内核会向进程发送 SIGPIPE 信号。
该信号的默认行为是终止进程。
当您刷新 Web 界面时旧的 WebSocket 连接可能被意外关闭如果此时服务器刚好尝试向其发送数据就会触发此信号导致崩溃。
修复方案在代码中添加了对 SIGPIPE 信号的忽略处理。
这样当连接断开时 send 函数会返回错误errno 为 EPIPE而不是直接让进程崩溃从而允许程序正常处理错误并继续运行。
/* 忽略 SIGPIPE防止客户端断开连接导致进程崩溃 */ signal(SIGPIPE, SIG_IGN);