winCE-不断进步

导航

[菜菜子心得]关于signal函数

linux下的minigui使用中:

如果signal和定时函数如alarm,setitimer不出现在同一个代码段,signal安装信号后,就会不到定时时间就提前进行信号处理。

出现在同一代码段中,才会正常发挥作用。

举例

void alm_handler(int sig)

{

//processing.....

}

int windowproc(HWND hwnd,int msg,WPARAM wparam,LPARAM lparam)

{

.....

//处理msg_lbuttondown

 {

   alarm(5);

  }

 

}

int miniguimain()

{

....................

signal(SIGALRM,alm_handler);

//主函数中安装了SIGALRM信号,指定了处理函数alm_handler;

//消息循环等

...............

}

 

这样的话,主程序运行时就会不断作sigalrm信号的处理。即使你没有触发lbuttondown的消息。如果你触发了lbuttondown消息,会5秒后再作该信号处理。

只有把signal(SIGALRM,alm_handler);挪到lbuttondown消息处理代码段,才可以正常使用。

posted on 2008-09-05 14:39  杰奎琳的小猫咪  阅读(334)  评论(0编辑  收藏  举报