论close()与signal(SIGPIPE,SIG_IGN)对服务器的重要性

一、close()与singa(SIGPIPE,SIG_IGN)的作用

1.Close是什么?

close():释放文件描述符,回收连接资源,避免句柄泄漏

2.SIGPIPE是什么?

SIGPIPE = 管道破裂信号

触发条件:往一个已经断开的连接(socket / 管道)写数据

默认行为:直接杀死进程!

3.SIG_IGN是什么?

SIG_IGN = Signal Ignore → 忽略信号

  • 它是一个宏定义 ,代表:收到信号不处理、不崩溃
  • 作用:告诉操作系统:这个信号来了直接丢掉,不要影响进程

二、二者在服务器的具体体现

1.close()

在我们的四次挥手中,如果我们的客户端断开连接,但是在服务器处于CLOSE_WIAT状态,由于没有close,所以我们服务器会一直处于CLOSE_WAIT状态,从而导致资源一直在浪费,相当于内存泄漏。

2.singa(SIGPIPE,SIG_IGN)

singal函数在我的文章中Linux分栏里面信号章节介绍过,感兴趣可以看看。

这个函数配上SIGPIPE与SIG_IGN相当于忽略SIGPIPE信号的默认行为。也就是当我们客户端断开,但是我们服务端不小心给与该客户端建立的文件描述符通信时,我们OS会给服务端一个SIGPIPE信号,让其终止该进程。而我们用了该函数相当关于忽略了OS的信号,从而进程不会被终止,要知道我们一个服务器是希望可以长久运行的,不能轻易断开

相关推荐
土星云SaturnCloud3 小时前
边缘侧大模型部署的新利器——国科环宇GK 300I大模型一体机深度评测与架构解析
服务器·人工智能·ai·边缘计算
晚风吹长发4 小时前
Docker基础——Docker Network(网络详解)
linux·运维·网络·ubuntu·docker·容器
Cx330_FCQ4 小时前
Tmux使用
服务器·git·算法
高磊20055 小时前
LVS(Linux virual server)
linux·服务器·lvs
LedgerNinja5 小时前
WEEX API 自动化交易实践:下单、撤单、订单查询与状态闭环
运维·自动化
山峰哥6 小时前
数据库性能救星:Explain执行计划深度拆解
服务器·开发语言·数据库·sql·启发式算法
执笔画流年呀6 小时前
Linux搭建Java项目部署环境
java·linux·运维
Dory_Youth7 小时前
联想笔记本电脑失灵
运维·笔记·电脑
W.W.H.7 小时前
嵌入式 Linux外接USB/WIFI模块兼容5G频段实战
linux·运维·5g·wifi
运维大师7 小时前
【K8S 运维实战】24-资源优化HPA与VPA
运维·kubernetes·github