Linux程序接收到sigpipe信号崩溃处理

针对 SIGPIPE 导致 server 进程崩溃的问题:

原因分析: 在 Linux 网络编程中,当向一个已关闭的 socket 发送数据时,内核会向进程发送 SIGPIPE 信号。

该信号的默认行为是终止进程。当您刷新 Web 界面时,旧的 WebSocket 连接可能被意外关闭,如果此时服务器刚好尝试向其发送数据,就会触发此信号导致崩溃。

修复方案:

在代码中添加了对 SIGPIPE 信号的忽略处理。这样当连接断开时, send 函数会返回错误(errno 为 EPIPE),而不是直接让进程崩溃,从而允许程序正常处理错误并继续运行。

复制代码
 /* 忽略 SIGPIPE,防止客户端断开连接导致进程崩溃 */
    signal(SIGPIPE, SIG_IGN);
相关推荐
xiaoqiMikko6 小时前
Linux 实战(九·完):重定向、sudo、通配符的坑 + 报错速查表 —— 三台真机实测
linux·centos
H.莓飛6 小时前
【C++】模板初阶
linux·开发语言·c++·visual studio
kmomo..6 小时前
Linux SPI 驱动开发学习笔记:从框架到实战
linux·驱动开发·学习
Lzg_na6 小时前
基于 inode 的文件系统详解
linux
小此方6 小时前
Linux网络(二十二):深入解析IP协议:从地址寻址、头部结构到内核机制与TTL环路控制
linux·网络·tcp/ip
Ruiery6 小时前
Linux 6.6内核内存管理深度解析(四):大页(HugeTLB / THP)— 为什么一个页表项要管 2MB
linux·运维·服务器
Lsetea6 小时前
OpenSSL报certificate rejected:error 28与CA辅助信任属性排查
linux·https·ssl证书·openssl·证书链
沫璃染墨6 小时前
从零入门计算机网络系列(五):UDP套接字编程实战——从核心API到客户端与服务器通信
linux·网络·c++·vscode·网络协议·udp
Margrop1 Margrop6 小时前
别再挨个试清华、中科大、阿里源了!国家队下场的“CERNET 镜像聚合站”,凭什么让你的下载直接起飞?
linux·开源镜像·cernet
一条破秋裤6 小时前
05_设备树自定义属性_写入读取验证
linux·网络·数据库