ACE实现动态交互-按下Ctrl+C输出一起-ACE_Event_Handler:handle_signal()
ACE实现动态交互----按下Ctrl+C输出一行----ACE_Event_Handler::handle_signal()
#include "ace/Reactor.h" #include "ace/Event_Handler.h" #include <iostream> #define SIGINT 2 //按下control + c (系统已有定义的信号量) class SignalHandler : public ACE_Event_Handler { public: //构造函数时注册信号,当此信号发生时(用户按下Ctrl+C时)被ACE_Reactor捕捉到 //同事调用此类的handle_signal方法 SignalHandler() { reactor()->instance()->register_handler(SIGINT,this); } int handle_signal(int signum, siginfo_t*,ucontext_t*) //处理信号 { switch(signum) { case SIGINT: std::cout<<"You pressed SIGINT(Ctrl+C)\n"; break; } return 0; } }; int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) { SignalHandler* eh = new SignalHandler(); ACE_Reactor::instance ()->run_reactor_event_loop(); delete eh; return 0; }