本文发致Stone Jiang的博客以及www.ace-tao.org/bbs。 2008-10-21
转贴请注明。
让程序响应ctrl+c信号,并让程序优雅地关闭(后续演练将展示)非常必要。本文即给出如何让程序响应ctrl+c的示例。
从本文您可以学到:
1. 如何使用MPC工具生成项目工程文件;
2. 如何编写最简单的ACE程序;
本文适用于:
ACE菜鸟,并且能已经正确下载、安装ACE。
ACE高手请漂过。
过程:
1. 创建Quit目录,创建quit.mpc文件
2. 创建 main.cpp, 借用Exit_Signal_Handle类(Exit_Signal_Handle.h,cpp)
3. 编译,调试
1. quit.mpc如下
| // file: quit.mpc // author: stone jiang 2005119@gmail.com // date: 2008-10-21 project (*) :aceexe { |
2. main.cpp如下
| // -*- C++ -*- //============================================================================= #include "ace/Log_Msg.h" int ACE_TMAIN(int, ACE_TCHAR *[]) Exit_Signal_Handler exit_handler (lock); ACE_Guard <ace_thread_semaphore> guard (lock); <br> ACE_DEBUG((LM_DEBUG,ACE_TEXT("Terminate.....\n"))); <br> return 0; <br>}</ace_thread_semaphore> |
3. Exit_Signal_Handle类的实现如下
| // -*- C++ -*- //============================================================================= #ifndef _EXIT_SIGNAL_HANDLER_H_ #include <ace><br>#include <ace></ace></ace> /** /// ctor /// dtor /// Called when object is signaled by OS (either via UNIX signals or private: #endif /* _EXIT_SIGNAL_HANDLER_H_ */ |
| // -*- C++ -*- //============================================================================= #include <iostream><br>#include "Exit_Signal_Handler.h" </iostream> Exit_Signal_Handler::Exit_Signal_Handler (ACE_Thread_Semaphore & lock) Exit_Signal_Handler::~Exit_Signal_Handler () int |
4. 生成工程文档
以Viusal studio 2008为例
如果是linux, vc9改为gnuace,如果是Visual Stuido 2003,2005,改为vc71,vc8
| > mwc.pl -type vc9 |
mpc工具为我们生成了Quit.sln
5. 编译
用Viusal Stuido 2008打开Quit.sln (由上一步生成所得),编译。
也可从命令行编译之
| >devenv Quit.sln /Build Debug |
6.运行,查看结果
运行后,屏幕显示
Starting.....
程序阻塞于此,按下ctrl+c组合键后,显示
Terminate.....
程序正常关闭。
需要完整源代码请在www.ace-tao.org/bbs留言或发邮件给我索要。
Stone Jiang.
本文介绍如何使用ACE库使程序能够优雅地响应Ctrl+C信号并关闭。通过创建特定类和信号处理器,实现信号处理功能,确保程序在接收到中断信号时能够释放资源并终止。
1423

被折叠的 条评论
为什么被折叠?



