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

相关推荐
非凡ghost2 小时前
视频剪辑不用等渲染,这款开源工具让切分合并秒级完成
运维·电脑·软件需求
FII工业富联科技服务4 小时前
Omniverse 数字孪生与柔性自动化,如何破解产能与交付、设备与空间的双重困境?
运维·自动化·devops
润滑卫士4 小时前
油液介电常数在线监测:测量原理与油液老化状态评估方法
运维
Rock Chin6975 小时前
把 n8n 接进 Slack:在对话里 @机器人 触发自动化工作流
运维·机器人·自动化
浩浩测试一下6 小时前
Linux 底层知识点 1
linux·运维·服务器
Eloudy6 小时前
全文 - IMEX 第01节 -IMEX overview
运维·服务器·网络
物联网软硬件开发-轨物科技7 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人
Escalating_xu7 小时前
【Linux 网络编程】TCP 跨平台实战:用 Windows 客户端访问 Linux 服务器
linux·服务器·网络
发量惊人的中年网工7 小时前
分公司访问总部ERP慢怎么办?SD-WAN组网的排查与验收要点
服务器·开发语言·php
海宇数据7 小时前
零信任架构实战:基于海宇网上踪迹欺诈行为识别构建自动化信贷资信评估网关
运维·人工智能·架构·自动化