ACE文章中的事件触发例子,怎么就触发不了

mygoodday 2006-04-16 03:53:39
下面的是ace文章中的例子,就是没进事件触发函数,是不是缺了什么配置阿

#include "ace/Reactor.h"
#include "ace/Event_Handler.h"
#include "ace/OS.h"

//int SIGWINCH=1,SIGINT=2;
const int SIGNT=2;
const int SIGWINCH=1;
//const int SIGINT=2;
class MyEventHandler: public ACE_Event_Handler
{
int handle_signal(int signum, siginfo_t*,ucontext_t*)
{
switch(signum)
{
case SIGWINCH:
ACE_DEBUG((LM_DEBUG, "You pressed SIGWINCH \n"));
break;
case SIGINT:
ACE_DEBUG((LM_DEBUG, "You pressed SIGINT \n"));
break;
}
return 0;
}
};
int main(int argc, char *argv[])
{
//instantiate the handler
MyEventHandler *eh =new MyEventHandler;

ACE_Reactor::instance()->register_handler(SIGWINCH,eh);
ACE_Reactor::instance()->register_handler(SIGINT,eh);

ACE_OS::kill(ACE_OS::getpid(),SIGWINCH);
ACE_OS::kill(ACE_OS::getpid(),SIGINT);

while(1)
//Start the reactors event loop
ACE_Reactor::instance()->handle_events();
}
...全文
441 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ydogg 2007-01-19
  • 打赏
  • 举报
回复
Window平台不支持信号
ReverseEngineering 2006-12-23
  • 打赏
  • 举报
回复
学习!好陌生呀!
filebat 2006-06-06
  • 打赏
  • 举报
回复
我知道为什么触发不了了。

因为ACE_OS::kill(ACE_OS::getpid(),SIGWINCH);函数在windows平台下没有实现,你没有办法通过它来向程序引发一个SIGWINCH信号。

不过,我也不知道怎么在windows平台下向程序引发一个SIGWINCH信号。
可能是ACE中windows平台不支持信号吧(Ctrl+C, Ctrl+PauseBreak等除外)
fullsail 2006-06-01
  • 打赏
  • 举报
回复
如果我没有记错,Windows下只能处理几个信号,
Ctrl+C,好像有,但是你的注册的信号对了吗,我不缺认。手边没有代码了。
filebat 2006-05-30
  • 打赏
  • 举报
回复
和我这个应该是一样的问题
http://community.csdn.net/Expert/TopicView.asp?id=4775749
楚牛9 2006-04-21
  • 打赏
  • 举报
回复
这个事件触发器好像只对于ACE定义那些事件出发,比如Ctrl+C退出
积木 2006-04-19
  • 打赏
  • 举报
回复
你要捕获什么事件?

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧