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

相关推荐
草莓熊Lotso24 分钟前
【Linux系统加餐】从原理到封装:基于建造者模式实现System V信号量工业级C++封装
android·linux·运维·服务器·网络·c++·建造者模式
广州灵眸科技有限公司7 小时前
瑞芯微(EASY EAI)RV1126B 核心板供电电路
linux·运维·服务器·单片机·嵌入式硬件·电脑
keyipatience7 小时前
18.Linux进程退出和进程等待机制详解
linux·运维·服务器
仙柒4157 小时前
控制平面组件和节点组件
运维·容器·kubernetes
齐齐大魔王7 小时前
Linux-网络编程实战
linux·运维·网络
wanhengidc8 小时前
私有云的作用都有哪些?
运维·服务器·网络·游戏·智能手机
花阴偷移8 小时前
Ubuntu 22.04版本下配置静态IP
linux·运维·服务器·tcp/ip·ubuntu
隔窗听雨眠9 小时前
doctype、charset、meta如何控制整个渲染流水线
java·服务器·前端
牛马十年9 小时前
当自动化运维系统被ai重构后
运维·人工智能·自动化