登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Code@Pig Home

喜欢背着一袋Code傻笑的Pig .. 忧美.欢笑.记忆.忘却 .之. 角落

 
 
 

日志

 
 

[libevent] event.h(3) ---- signal  

2010-01-25 02:57:44|  分类: net_libevent |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
libevent 封装的最后一个事件是 signal,用起来也很简单。

不过注意一点,就是 libevent 在 signal 到达时,不是立即回调我们注册的接口,而是放到 active event list 中,与 I/O event, timer 一同回调。我认为这个设计是对头滴,hoho~

--------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <string.h>
#include <event.h>

void signal_handler(int sig, short events, void *arg)
{
    printf("got signal: %s\n", strsignal(sig));
}

void init_signal_handler()
{
    struct event *ev1, *ev2;

    ev1 = malloc(sizeof(struct event));
    signal_set(ev1, SIGUSR1, signal_handler, (void *)ev1);
    signal_add(ev1, NULL);

    ev2 = malloc(sizeof(struct event));
    signal_set(ev2, SIGUSR2, signal_handler, (void *)ev2);
    signal_add(ev2, NULL);
}

int main()
{
    event_init();
    init_signal_handler();
    event_dispatch();
    return 0;
}
--------------------------------------
$ ./a.out &
[1] 1471
$ ps
  PID  TT  STAT      TIME COMMAND
 1471   1  S      0:00.00 ./a.out
$ kill -SIGUSR1 1471
got signal: User defined signal 1: 30
$ kill -SIGUSR2 1471
got signal: User defined signal 2: 31

--------------------------------------

  评论这张
 
阅读(1231)| 评论(1)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018