Socket pair创建好了,可是libevent的事件主循环还是不知道Signal是否发生了啊,看来我们还差了最后一步,那就是:为socket pair的读socket在libevent的event_base实例上注册一个persist的读事件。 这样当向写socket写入数据时,读socket就会得到通知,触发读事件,从而event_base就能相应的得到通知了。 前面提到过,Libevent会...
Socket pair就是一个socket对,包含两个socket,一个读socket,一个写socket。工作方式如下图所示: 创建一个socket pair并不是复杂的操作,可以参见下面的流程图,清晰起见,其中忽略了一些错误处理和检查。 Libevent提供了辅助函数evutil_socketpair()来创建一个socket pair,可以结合上面的创建流程来分析该函数。 2 、集成...
在libevent中这是通过socket pair完成的,下面就来详细分析一下。 Socket pair就是一个socket对,包含两个socket,一个读socket,一个写socket。工作方式如下图所示: 创建一个socket pair并不是复杂的操作,可以参见下面的流程图,清晰起见,其中忽略了一些错误处理和检查。 Libevent提供了辅助函数evutil_socketpair()来创建...
在libevent中这是通过socket pair完成的,下面就来详细分析一下。 Socket pair就是一个socket对,包含两个socket,一个读socket,一个写socket。工作方式如下图所示: 创建一个socket pair并不是复杂的操作,可以参见下面的流程图,清晰起见,其中忽略了一些错误处理和检查。 Libevent提供了辅助函数evutil_socketpair()来创建...
Socket pair 创建好了,可是 libevent 的事件主循环还是不知道 Signal 是否发生了啊,看来我们还差了最后一步,那就是:为 socket pair 的读 socket 在 libevent 的 event_base 实例 上注册一个 persist(持久的) 的读事件。 这样当向写 socket 写入数据时,读 socket 就会得到通知,触发读事件,从而 event_base 就...
socket pair就是一个socket对,一个读socket,一个写socket。Socket pair创建好了之后,读socket在libevent的event_base实例上注册了一个persist的读事件。这样当写socket写入数据时,读socket就会相应的得到通知了。前面提到过,libevent会在事件主循环中检查标记,来确定是否有触发的Signal,如果 标记被设置就处理这些signal...
evutil_make_socket_nonblocking(base->sig.ev_signal_pair[0]); evutil_make_socket_nonblocking(base->sig.ev_signal_pair[1]); /* 添加读事件到ev_signal_pair[1],也就是在Signal的处理函数中可以采用ev_signal_pair[0]发送数据,触发ev_signal_pair[1]的读事件,函数evsig_cb中完成读操作 */ ...
evutil_make_socket_nonblocking(base->sig.ev_signal_pair[0]); ///初始化event结构 event_set(&base->sig.ev_signal, base->sig.ev_signal_pair[1], EV_READ | EV_PERSIST, evsignal_cb, &base->sig.ev_signal); base->sig.ev_signal.ev_base = base; ...
evutil_socket_tev_signal_pair[2]; //用来标志是否已经将ev_signal这个event加入到event_base中了 intev_signal_added; //用户一共要监听多少个信号 intev_n_signals_added; //数组。用户可能已经设置过某个信号的信号捕抓函数。但 //Libevent还是要为这个信号设置另外一个信号捕抓函数, ...
[NSIG],具体记录每个信号触发的次数,evsigcaught[signo]是记录信号signo被触发的次数; 7)sh_old记录了原来的signal处理函数指针,当信号signo注册的event被清空时,需要重新设置其处理函数; evsignal_info的初始化包括,创建socket pair,设置ev_signal事件(但并没有注册,而是等到有信号注册时才检查并注册),并将所有标记...