您的位置:首页 > Web前端 > React

[ACE程序员教程笔记]使用Reactor处理信号

2011-01-09 20:39 302 查看
本例演示了使用ACE_Reactor处理信号的方法,主要有三个个关键步骤:

1.编写信号处理函数,针对感兴趣的信号进行处理。

2.将此信号处理对象注册到Reactor中。

3.启动Reactor的事件处理循环。

下面的代码演示了在程序运行时按下“Ctrl+C”和“Ctrl+Break"是的处理结果。

#include "stdafx.h"
#include "ace/Reactor.h"
#include "ace/Event_Handler.h"
#include <signal.h>
class SignalHandler : public ACE_Event_Handler
{
int handle_signal(int signum, siginfo_t * /* = 0 */, ucontext_t * /* = 0 */)
{
switch(signum)
{
case SIGINT:
ACE_DEBUG((LM_DEBUG,ACE_TEXT("SIGINT!/n")));
break;
case SIGTERM:
ACE_DEBUG((LM_DEBUG,ACE_TEXT("SIGTERM!/n")));
break;
case SIGBREAK:
ACE_DEBUG((LM_DEBUG,ACE_TEXT("SIGBREAK!/n")));
break;
}
return 0;
}
};
int ACE_TMAIN(int argc, ACE_TCHAR* argv[])
{
SignalHandler sh;
ACE_Reactor::instance()->register_handler(SIGINT,&sh);
ACE_Reactor::instance()->register_handler(SIGTERM,&sh);
ACE_Reactor::instance()->register_handler(SIGBREAK,&sh);
while(1)
{
ACE_Reactor::instance()->handle_events();
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐