1.addsig函数:
遇到SIGPIPE信号选择忽略,这是个什么信号以及为什么要忽略可以参考一下这两篇文章 //还可以用signal(SIGPIPE,SIG_IGN)处理https://www.cnblogs.com/lit10050528/p/5116566.html 和https://www.jianshu.com/p/1a9ea7f4d46e
-总结一下过程就是,一个客户端单方面关闭了连接(close),但是服务端不清楚客户端是close还是shutdown,如果服务端以为客户端是shutdown状态就会继续向客户端发送信息(write),第一次
如果发送缓冲没问题的话服务端会收到正确写入,但是发送的报文到了客户端(注意:客户端此时是close状态也就是说不发送但也不接受消息),根据TCP协议的规定,客户端会给服务端发送一个
RST响应报文,服务端收到这个响应报文后若再往这个客户端发送数据时,再次调用write发送信号时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不能再写入数据
因为SIGPIPE信号的默认行为是结束进程,而我们绝对不希望因为写操作的错误而导致程序退出,尤其是作为服务器程序来说,所以为了避免这种情况导致服务端进程退出,应该捕捉这个信号并忽略它
2.epolloneshot事件
使一个socket连接任何时刻都只被一个线程所处理
池的概念和EPOLLONESHOT事件(读Linux高性能服务器)_零蛋蛋的技术博客_51CTO博客
(23条消息) EPOLLONESHOT事件_liuxuejiang158的博客-CSDN博客_epolloneshot
3.实验过程中出现无法访问此页面(响应时间过长)的问题
类似于这种页面,但不是拒绝连接,是响应时间过长,原图找不到了:
可能是你的linux系统忘了装apache
标签:项目,遇到,发送,SIGPIPE,https,apache,一些,服务端,客户端 From: https://www.cnblogs.com/balabalabubalabala/p/17015482.html