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

    技术2022-06-27  99

    本例演示了使用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; }


    最新回复(0)