`
pleasetojava
  • 浏览: 729535 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

ACE 演练: 让程序响应ctrl+c信号

阅读更多

本文发致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

> mwc.pl -type vc9

image

mpc工具为我们生成了Quit.sln

5. 编译

用Viusal Stuido 2008打开Quit.sln (由上一步生成所得),编译。

也可从命令行编译之

>devenv Quit.sln /Build Debug
image

6.运行,查看结果

image

运行后,屏幕显示

Starting.....

程序阻塞于此,按下ctrl+c组合键后,显示

Terminate.....

程序正常关闭。

需要完整源代码请在www.ace-tao.org/bbs留言或发邮件给我索要。

Stone Jiang.

分享到:
评论

相关推荐

    ACE-5.4+TAO-1.4+CIAO-0.4.part2.rar

    ACE 提供了一组丰富的可 重用 C++包装外观(wrapper facade)和框架组件,可跨多种平台完成通用的通信软件任务,其中包括: 事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存管理、...

    Java基于RBAC的完全响应式权限管理系统.zip

    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

    【标题】"smvc-ace:spring-mvc+velocity+mybatis ;DB" 指的是一个基于Spring MVC、Velocity模板引擎和MyBatis持久层框架的Web应用程序项目,其中数据库选用MySQL。这个项目的目的是创建一个高效、灵活的后端架构,...

    一加 ACE3-OnePlus Ace3-9008资源免权限+详细图文教程

    一加 ACE3-OnePlus Ace3-9008资源免权限+详细图文教程 资源说明: 9008刷写固件。无权限刷写 任意刷写 会进入9008端口 会基础玩机刷写固件的友友下载 资源带刷写教程步骤 资源在网盘 需要一定刷机常识和玩机基础...

    ACE_OS::mktime函数源代码

    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:spring+mybatis+springmvc+freemark集成项目

    Ace 项目是一个基于 Java 技术栈的集成测试项目,主要使用了 Spring、Mybatis 和 SpringMVC 框架,以及 FreeMarker 模板引擎。这个项目旨在提供一个全面的后端开发环境,便于开发者快速搭建应用系统。下面将分别详细...

    ACE_ADMIN 框架学习手册

    总结而言,ACE_ADMIN框架是一个基于Bootstrap框架构建的后台管理界面开发工具,提供了一套丰富的UI组件和脚本插件,支持响应式设计,并且可能支持多种主题皮肤。这份学习手册对开发者学习使用ACE_ADMIN框架具有相当...

    ACE-5.4+TAO-1.4+CIAO-0.4.part4.rar

    ACE 提供了一组丰富的可 重用 C++包装外观(wrapper facade)和框架组件,可跨多种平台完成通用的通信软件任务,其中包括: 事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存管理、...

    ACE资料系列5 - ACE程序员指南 ACE程序员指南:网络与系统编程的实用设计模式

    《ACE程序员指南:网络与系统编程的实用设计模式》是ACE资料系列的第五部分,对于深入理解和应用ACE框架至关重要。这本书是ACE学习者的必备读物,尤其适合那些希望提升网络和系统编程技能的开发者。 ACE(Adaptive ...

    ACE mysql可用版ACE框架+反向代码生成+mysql数据库脚本

    本文将详细解析"ACE mysql可用版ACE框架+反向代码生成+mysql数据库脚本"这一主题,深入探讨其中涉及的SpringMVC、ACE框架、Bootstrap以及MySQL数据库等相关知识点。 首先,我们来了解一下ACE框架。ACE(Awesome ...

    ACE-5.4+TAO-1.4+CIAO-0.4.part3.rar

    ACE 提供了一组丰富的可 重用 C++包装外观(wrapper facade)和框架组件,可跨多种平台完成通用的通信软件任务,其中包括: 事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存管理、...

    ACE_OS命名空间函数参考文档

    - `ACE_Semaphore`: 实现信号量,用于控制对共享资源的访问数量。 - `ACE_Event`: 事件标志,用于线程间的通信和同步。 4. **内存管理** - `ACE_OS::malloc()`: 分配内存,相当于标准库的`malloc()`。 - `ACE_...

    ACE ADMIN中文版+英文版+API文档资源整合

    ACE ADMIN是一款广泛应用于后台管理界面开发的前端框架,它以其丰富的组件、优秀的性能以及高度可定制性而受到开发者的欢迎。这个资源包包含了ACE ADMIN的中文版、英文版以及API文档,为开发者提供了全面的学习和...

    ace 响应式布局

    响应式布局是现代网页设计的关键技术之一,它允许网页在不同设备上自适应显示,无论是桌面、平板还是手机,都能提供良好的用户体验。Ace Admin是一款基于HTML5、CSS3和Bootstrap框架构建的响应式后台管理模板,它...

    ACE技术内幕:深入解析ACE架构设计与实现原理

    《ace技术内幕:深入解析ace架构设计与实现原理》从构架模式、编程示例和源代码3个维度系统地对经典网络框架ace(adaptivemunicationenvironment)的架构设计和实现原理进行了深入分析,它能解决4个方面的问题:,...

    ACE资料系列4 - C++网络编程 卷2 基于ACE和框架的系统化复用 +PPT

    3. **事件循环**:ACE的事件循环机制处理来自多个源的并发事件,如网络连接、定时器和信号,确保程序可以及时响应。 4. **服务配置**:ACE允许动态加载和卸载服务,这在构建可扩展和灵活的分布式系统时特别有用。 ...

    JAVA微信小程序商城源码+完整后台

    JAVA微信小程序商城源码+完整后台 架构:springmvc+mybatis+spring+maven+mysql 前端h5+css3 后台boostrap-ace技术 功能介绍: 商品发布 物流管理 评价系统 优惠券 运费系统 在线客服 在线支付 在线退款 微信管理等

    ACE获取网页内容小程序

    "ACE获取网页内容小程序"是基于C++编程语言和ACE(Adaptive Communication Environment)网络库的一个小型应用程序。ACE是一个开源的、跨平台的C++框架,专为分布式和实时系统设计,提供了丰富的网络通信功能。这个...

    ACE-5.4+TAO-1.4+CIAO-0.4.part1.rar

    ACE 提供了一组丰富的可 重用 C++包装外观(wrapper facade)和框架组件,可跨多种平台完成通用的通信软件任务,其中包括: 事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存管理、...

    AceAdmin后台UI框架

    AceAdmin UI框架的核心特点在于其响应式设计,能够自适应各种设备的屏幕尺寸,无论是桌面端还是移动端,都能提供一致的用户体验。框架内置了多种布局选项,允许开发者根据项目需求调整页面结构,包括固定和流式布局...

Global site tag (gtag.js) - Google Analytics