[菜菜子心得]关于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消息处理代码段,才可以正常使用。