int
_evsignal_restore_handler(struct event_base *base, int evsignal)
{
int ret = 0;
struct evsignal_info *sig = &base->sig;
#ifdef HAVE_SIGACTION
struct sigaction *sh;
#else
ev_sighandler_t *sh;
#endif
/* restore previous handler */
sh = sig->sh_old[evsignal];//获得之前信号注册的回调函数指针
sig->sh_old[evsignal] = NULL;
#ifdef HAVE_SIGACTION
if (sigaction(evsignal, sh, NULL) == -1) {
event_warn("sigaction");
ret = -1;
}
#else
if (signal(evsignal, *sh) == SIG_ERR) {//重新注册之前的回调函数
event_warn("signal");
ret = -1;
}
#endif
free(sh);
return ret;
}
[libevent]_evsignal_restore_handler()
最新推荐文章于 2022-08-09 11:34:33 发布