/**
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;
}
|
阅读(3750) | 评论(0) | 转发(0) |