This is a example code that shows how to catch interruption signals on a Windows system and what you can do when such signals are sent to your application. Interruption signals are for example control-c, a break or shutdown event.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | #include <windows.h> #include <stdio.h> /* * */ BOOL APE_ControlHandler(DWORD pControlType); int main() { int lRetVal = 0; // Register the event handler SetConsoleCtrlHandler((PHANDLER_ROUTINE) APE_ControlHandler, TRUE); while (1) Sleep(100); return(lRetVal); } /* * */ BOOL APE_ControlHandler(DWORD pControlType) { switch(pControlType) { // Handle the CTRL-C signal. case CTRL_C_EVENT: Beep(500, 200); printf("Ctrl-C event : Starting depoisoning process"); return(FALSE); case CTRL_CLOSE_EVENT: Beep(600, 200); printf("Ctrl-Close event : Starting depoisoning process"); return(FALSE); case CTRL_BREAK_EVENT: Beep(700, 200); printf("Ctrl-Break event : Starting depoisoning process"); return(FALSE); case CTRL_LOGOFF_EVENT: Beep(800, 200); printf("Ctrl-Logoff event : Starting depoisoning process"); return(FALSE); case CTRL_SHUTDOWN_EVENT: Beep(900, 200); printf("Ctrl-Shutdown event : Starting depoisoning process"); return(FALSE); default: Beep(1000, 200); printf("Unknown event \"%d\" : Starting depoisoning process", pControlType); return(FALSE); } } |