[ACE程序员教程笔记]使用Reactor处理信号
2011-01-09 20:39
302 查看
本例演示了使用ACE_Reactor处理信号的方法,主要有三个个关键步骤:
1.编写信号处理函数,针对感兴趣的信号进行处理。
2.将此信号处理对象注册到Reactor中。
3.启动Reactor的事件处理循环。
下面的代码演示了在程序运行时按下“Ctrl+C”和“Ctrl+Break"是的处理结果。
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; }
相关文章推荐
- [ACE程序员教程笔记]使用Reactor实现Accept和数据读取
- [ACE程序员教程笔记]使用ACE_Acceptor分离连接和事件处理
- [ACE程序员教程笔记]使用ACE_Acceptor建立连接并处理连接请求
- Unix信号处理学习笔记
- 学习笔记:zipfile的简单使用解压和压缩文件,以为处理加密的情况
- [离散时间信号处理学习笔记] 5. 离散时间信号与系统的频域表示
- 【日常笔记】mybatis 处理 in 语句的使用
- ACE笔记(3) -用ACE_Reactor 实现SOCKET事件处理
- iOS并发编程笔记,包含GCD,Operation Queues,Run Loops,如何在后台绘制UI,后台I/O处理,最佳安全实践避免互斥锁死锁优先级反转等,以及如何使用GCD监视进程文件文件夹,并发测试的方案等
- SpringMVC学习笔记(四)使用JSP处理表单(处理用户注册表单)
- 科学音频处理(二):如何使用 Octave 对音频文件进行基本数学信号处理
- 使用可重入函数进行更安全的信号处理
- [NPWP笔记]使用多进程处理客户请求
- 压缩感知和稀疏信号处理课程笔记(陆吾生)
- Android网络图片加载缓存处理库的使用---第三方库学习笔记(五)
- [学习笔记]信号基本概念(中断和信号)/名称及常用信号/信号处理/signal函数实践
- python练习笔记——利用信号signal处理僵尸进程
- 【Qt笔记】使用 SAX 处理 XML
- php学习笔记(十八)php扩展库mysqli的使用和处理结果集
- 科学音频处理(二):如何使用 Octave 对音频文件进行基本数学信号处理