本文发致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 { exename = * } |
2. main.cpp如下
// -*- C++ -*- //============================================================================= /** * @file Exit_Signal_Handler.cpp * * $Id$ * * @author Stone Jiang (2005119@gmail.com) */ //============================================================================= #include "ace/Log_Msg.h" #include "ace/Sig_Handler.h" #include "Exit_Signal_Handler.h" int ACE_TMAIN(int, ACE_TCHAR *[]) { ACE_DEBUG((LM_DEBUG,ACE_TEXT("Starting.....\n"))); ACE_Thread_Semaphore lock (0); Exit_Signal_Handler exit_handler (lock); ACE_Sig_Handler sig_handler; sig_handler.register_handler (SIGINT, &exit_handler); 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++ -*- //============================================================================= /** * @file Exit_Signal_Handler.h * * $Id$ * * @author Friedhelm Wolf (fwolf@dre.vanderbilt.edu) */ //============================================================================= #ifndef _EXIT_SIGNAL_HANDLER_H_ #define _EXIT_SIGNAL_HANDLER_H_ #include <ace><br>#include <ace></ace></ace> /** * @class Exit_Signal_Handler * * @brief this class handles the kill signal for this application in a nice * way, releasing a semaphore. */ class Exit_Signal_Handler : public ACE_Event_Handler { public: /// ctor Exit_Signal_Handler (ACE_Thread_Semaphore & lock); /// dtor virtual ~Exit_Signal_Handler (); /// Called when object is signaled by OS (either via UNIX signals or /// when a Win32 object becomes signaled). virtual int handle_signal (int signum, siginfo_t *, ucontext_t *); private: ACE_Thread_Semaphore & lock_; }; #endif /* _EXIT_SIGNAL_HANDLER_H_ */ |
// -*- C++ -*- //============================================================================= /** * @file Exit_Signal_Handler.cpp * * $Id$ * * @author Friedhelm Wolf (fwolf@dre.vanderbilt.edu) */ //============================================================================= #include <iostream><br>#include "Exit_Signal_Handler.h" </iostream> Exit_Signal_Handler::Exit_Signal_Handler (ACE_Thread_Semaphore & lock) : lock_ (lock) { } Exit_Signal_Handler::~Exit_Signal_Handler () { } int Exit_Signal_Handler::handle_signal (int , siginfo_t *, ucontext_t *) { return lock_.release (); } |
4. 生成工程文档
以Viusal studio 2008为例
如果是linux, vc9改为gnuace,如果是Visual Stuido 2003,2005,改为vc71,vc8
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 提供了一组丰富的可 重用 C++包装外观(wrapper facade)和框架组件,可跨多种平台完成通用的通信软件任务,其中包括: 事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存管理、...
JQuery+Bootstrap3.3.5+ACE1.3.4(基于bootstrap的响应式后台管理模板)+layer+dlshouwen.grid.v1.2.1+JQuery validation等 数据存储: 数据库使用Mysql + Redis + Ehcache 主要功能: 这里是列表文本系统基础...
【标题】"smvc-ace:spring-mvc+velocity+mybatis ;DB" 指的是一个基于Spring MVC、Velocity模板引擎和MyBatis持久层框架的Web应用程序项目,其中数据库选用MySQL。这个项目的目的是创建一个高效、灵活的后端架构,...
一加 ACE3-OnePlus Ace3-9008资源免权限+详细图文教程 资源说明: 9008刷写固件。无权限刷写 任意刷写 会进入9008端口 会基础玩机刷写固件的友友下载 资源带刷写教程步骤 资源在网盘 需要一定刷机常识和玩机基础...
static __time64_t __cdecl _make__time64_t ( struct tm *tb, int ultflag ) { __time64_t tmptm1, tmptm2, tmptm3; struct tm tbtemp; long dstbias = 0;... long timezone = 0;...= NULL ), EINVAL, ( ( __time64...
Ace 项目是一个基于 Java 技术栈的集成测试项目,主要使用了 Spring、Mybatis 和 SpringMVC 框架,以及 FreeMarker 模板引擎。这个项目旨在提供一个全面的后端开发环境,便于开发者快速搭建应用系统。下面将分别详细...
总结而言,ACE_ADMIN框架是一个基于Bootstrap框架构建的后台管理界面开发工具,提供了一套丰富的UI组件和脚本插件,支持响应式设计,并且可能支持多种主题皮肤。这份学习手册对开发者学习使用ACE_ADMIN框架具有相当...
ACE 提供了一组丰富的可 重用 C++包装外观(wrapper facade)和框架组件,可跨多种平台完成通用的通信软件任务,其中包括: 事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存管理、...
《ACE程序员指南:网络与系统编程的实用设计模式》是ACE资料系列的第五部分,对于深入理解和应用ACE框架至关重要。这本书是ACE学习者的必备读物,尤其适合那些希望提升网络和系统编程技能的开发者。 ACE(Adaptive ...
本文将详细解析"ACE mysql可用版ACE框架+反向代码生成+mysql数据库脚本"这一主题,深入探讨其中涉及的SpringMVC、ACE框架、Bootstrap以及MySQL数据库等相关知识点。 首先,我们来了解一下ACE框架。ACE(Awesome ...
ACE 提供了一组丰富的可 重用 C++包装外观(wrapper facade)和框架组件,可跨多种平台完成通用的通信软件任务,其中包括: 事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存管理、...
- `ACE_Semaphore`: 实现信号量,用于控制对共享资源的访问数量。 - `ACE_Event`: 事件标志,用于线程间的通信和同步。 4. **内存管理** - `ACE_OS::malloc()`: 分配内存,相当于标准库的`malloc()`。 - `ACE_...
ACE ADMIN是一款广泛应用于后台管理界面开发的前端框架,它以其丰富的组件、优秀的性能以及高度可定制性而受到开发者的欢迎。这个资源包包含了ACE ADMIN的中文版、英文版以及API文档,为开发者提供了全面的学习和...
响应式布局是现代网页设计的关键技术之一,它允许网页在不同设备上自适应显示,无论是桌面、平板还是手机,都能提供良好的用户体验。Ace Admin是一款基于HTML5、CSS3和Bootstrap框架构建的响应式后台管理模板,它...
《ace技术内幕:深入解析ace架构设计与实现原理》从构架模式、编程示例和源代码3个维度系统地对经典网络框架ace(adaptivemunicationenvironment)的架构设计和实现原理进行了深入分析,它能解决4个方面的问题:,...
3. **事件循环**:ACE的事件循环机制处理来自多个源的并发事件,如网络连接、定时器和信号,确保程序可以及时响应。 4. **服务配置**:ACE允许动态加载和卸载服务,这在构建可扩展和灵活的分布式系统时特别有用。 ...
JAVA微信小程序商城源码+完整后台 架构:springmvc+mybatis+spring+maven+mysql 前端h5+css3 后台boostrap-ace技术 功能介绍: 商品发布 物流管理 评价系统 优惠券 运费系统 在线客服 在线支付 在线退款 微信管理等
"ACE获取网页内容小程序"是基于C++编程语言和ACE(Adaptive Communication Environment)网络库的一个小型应用程序。ACE是一个开源的、跨平台的C++框架,专为分布式和实时系统设计,提供了丰富的网络通信功能。这个...
ACE 提供了一组丰富的可 重用 C++包装外观(wrapper facade)和框架组件,可跨多种平台完成通用的通信软件任务,其中包括: 事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存管理、...
AceAdmin UI框架的核心特点在于其响应式设计,能够自适应各种设备的屏幕尺寸,无论是桌面端还是移动端,都能提供一致的用户体验。框架内置了多种布局选项,允许开发者根据项目需求调整页面结构,包括固定和流式布局...