/**
linux/unix 下signal函数移植windows下
linux下通常的做法:
signal(sigint, sigfunc); // 设置信号
void sigfunc(int signo)
{
... //处理信号相关的操作
}
以下是linux下的ctrl c在windows下的实现
一篇非常不错的参考文献:
*/
#include <stdio.h>
#include <windows.h>
static is_loop = 1;
// 捕获控制台 ctrl c 事件的函数
bool ctrlhandler( dword fdwctrltype )
{
switch (fdwctrltype)
{
/* handle the ctrl-c signal. */
case ctrl_c_event:
printf("ctrl_c_event \n");
break;
case ctrl_close_event:
printf("ctrl_close_event \n");
break;
case ctrl_break_event:
printf("ctrl_break_event \n");
break;
case ctrl_logoff_event:
printf("ctrl_logoff_event \n");
break;
case ctrl_shutdown_event:
printf("ctrl_shutdown_event \n");
break;
default:
return false;
}
is_loop = 0;
return (true);
}
int main(int argc, char *argv[])
{
printf("set console ctrl handler\n");
setconsolectrlhandler((phandler_routine)ctrlhandler, true);
while (is_loop);
return 0;
}
|
阅读(3725) | 评论(0) | 转发(0) |