Bonjour,
voilà j'essai de catcher les seg fault en utilisant le header SUGNAL.H.
j'utilise un code que j'ai trouvé sur le net.
l'application arrive à catcher l'erreur de segmentation, mais par contre elle s'arrete (puisque il y a un exit()) dans ma fonction catch.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <string.h> void printstats(void){ printf("stats!\n"); _exit(0); } int main(void){ /* gonna round up some signals to catch */ signal(SIGSEGV, printstats); /* '(sig_t) printstats' for freebsd :P */ char p; strcpy(p,"jdjfj"); printf("%s",p); printf("holahola"); }
probleme si j'enlève exit(), il catch plus l'erreur et bien le programme bug.
comment faire pour retablir l'etat du signal d'origine, pour que le programme saute l'erreur et continue quan même a tourné.
en gros, dans mon code je veux bien que "holahola" soit affichée.
merci et bonne journé
Partager