libevent 1.0代码阅读
来源:互联网 发布:产品培训知乎 编辑:程序博客网 时间:2024/06/07 22:09
tcp的一个例子
http://www.cppblog.com/lk624424108/articles/162909.html
带多线程的
http://blog.chinaunix.net/uid-756931-id-353318.html
连接一端关闭连接,
使用libevent编写websocket服务端时遇到了一个问题:
浏览器与服务端建立连接后,若刷新或关闭浏览器窗口(未监听相应事件并处理),服务端无法得知连接断开,按理说,这种情况属于client异常终止,跟拔网线的情况类似。这种情况下,服务端不知情,仍保留此连接,仍按照既定逻辑向client写数据,写了两次后,服务端程序终止(多次测试,均是第2次后终止),不是崩溃,是异常终止,非常不解。
问了一位很有经验的同事,得知是SIGPIPE信号导致程序终止。
查了相关资料,大致明白:连接建立,若某一端关闭连接,而另一端仍然向它写数据,第一次写数据后会收到RST响应,此后再写数据,内核将向进程发出SIGPIPE信号,通知进程此连接已经断开。而SIGPIPE信号的默认处理是终止程序,导致上述问题的发生。
为避免这种情况,可以选择忽略SIGPIPE信号,不执行任何动作。
#include <signal.h>
//SIGPIPE ignore
struct sigaction act;
act.sa_handler = SIG_IGN;
if (sigaction(SIGPIPE, &act, NULL) == 0) {
LOG("SIGPIPE ignore");
}
转载请注明出处 http://www.cnblogs.com/caosiyang/archive/2012/07/19/2599071.html
在libevent 中eventset 不管是time还是事件 最后一个参数是 带的参数
为什么在event中加 成员会使字节出现问题?
event_pending 判断事件是否在处理
libevent 1.0 ,memcached 1.2.2第一个多线程
研究ngx1
绿色通道: 好文要顶 关注我 收藏该文与我联系
0 0
- libevent 1.0代码阅读
- libevent代码阅读
- libevent代码阅读(1)
- libevent代码阅读(16)——缓冲区
- libevent源码阅读笔记
- libevent代码阅读(2)——尾队列的学习
- libevent代码阅读(3)——入门例子“hello-world.c”的学习
- libevent代码阅读(4)——“hello-world.c”之 ibevent框架的使用流程
- libevent代码阅读(5)——“hello-world.c”之 event_base对象的创建
- libevent代码阅读(6)——“hello-world.c”之 io复用机制
- libevent代码阅读(8)——“hello-world.c”之 创建监听器
- libevent代码阅读(9)——“hello-world.c”之 创建事件处理器
- libevent代码阅读(12)——event_base中的一些事件处理器容器
- libevent代码阅读(13)——epoll的事件等待以及分发过程
- libevent代码阅读(14)——select复用机制(一)
- libevent代码阅读(15)——epoll复用机制
- libevent源码阅读笔记(一)
- libevent源码阅读笔记(二)
- Android 蓝牙
- Fusioncharts图表组件API参考方法(Functions)汇总篇(续)
- CSS应用 - :before, :after, box-shadow
- 多层路网络架构下,上层路由无法ping通下层路由wan口
- hate vs hatred
- libevent 1.0代码阅读
- 几道经典的嵌入式C语言笔试题
- linux环境下安装openvpn客户端
- openFrameworks下的肤色检测源码
- 获取正则表达式匹配字符串的一部分
- 驳PHP优于Node.js的五大理由
- hdu2066 一个人的旅行(最短路)
- Js Json字符串转json
- Spring获取webapplicationcontext,applicationcontext几种方法