Ik heb een c programma dat alle handlers uit signal.h (vc6 versie) opvangt. Alleen als ik de aplicatie met kill.exe afsluit, dan wordt geen enkele handler gebruikt. Hoe kan ik er voor zorgen dat het programma toch veilig afgesloten wordt? Bv als ik een file open heb, dat ik nog de kans heb om hem af te flushen.
code:
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
| #include <stdlib.h>
#include <stdio.h>
#include <windows.h>
#include <signal.h>
int running = 1;
int handler( int signal, char* kind ) {
printf("Ending %s....\n", kind);
running = FALSE;
return 0;
}
int handlerInt(int signal)
{
return handler(signal, "Int");
}
// andere handlers
int dummy()
{
while(running)
Sleep(1000);
return 0;
}
int main(int argc, char* argv[])
{
int status = 0;
printf("START killtest\n");
signal( SIGINT, handlerInt );
signal( SIGTERM, handlerTerm );
signal( SIGABRT, handlerAbrt );
signal( SIGFPE, handlerFpe );
signal( SIGILL, handlerIll );
signal( SIGSEGV, handlerSegv );
dummy();
return status;
} |