论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的信号,从而进程不会被终止,要知道我们一个服务器是希望可以长久运行的,不能轻易断开

相关推荐
xbzb15 分钟前
自定义 yum 软件源:Linux 上 createrepo,Windows 上纯 Python 也能造
linux·运维·windows·python·yum·createrepo
Android系统攻城狮26 分钟前
Linux FFmpeg深度解析之avio_open调用流程与实战(三十八)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
瑞克-桑切斯2 小时前
ERP 企业生产管理系统部署手册
运维·docker·云原生·容器·eureka
江屿风2 小时前
【Git-组件】【Git入门:从文档灾难到版本掌控】流食般投喂
运维·笔记·git·组件·版本控制
我不会起名字3223 小时前
K8s 节点磁盘打满导致 Pod 被驱逐:4 类占用与回收顺序
运维·kubernetes·k8s·diskpressure·evicted
雪落漂泊3 小时前
Linux进程(五):进程地址空间篇
linux·运维·服务器
瑞克-桑切斯3 小时前
docker mail商城
运维·docker·容器
AR-26710-4 小时前
Linux Day32——网络,ROCE-IB与以太网
linux·运维
不庸.4 小时前
WPScan 实战入门:从 Docker 靶场到弱密码爆破
运维·安全·web安全·docker·容器·安全性测试·wpscan
wdeok4 小时前
Socket编程Tcp
服务器·网络·tcp