|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre habitué
![]() Inscription : avril 2004 Messages : 305 ![]() |
Je voudrais connaître le moyen usuel pour relancer une application après une erreur critique (comme un segmentation fault. Visual Studio, quand il plante, se relance par exemple). Déjà, pour récupérer l'erreur, j'utilise signal() ainsi :
Code :
Quelqu'un connaît-il le moyen standard pour faire ceci ? Merci
__________________
L'Opus attire les Prélats |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() |
Visual se relance parce qu'il y a une case à cocher dans la fenêtre DRWatson qui apparait en cas de crash. Le mieux serait de trouver le moyen de faire apparaître cette case pour ton programme.
Pour un programme en arrière-plan par contre, le mieux est d'en faire un service, les services peuvent être réglés pour être relancés automatiquement.
__________________
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant. "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?" Apparently everyone. -- Raymond Chen. Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen. |
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() Inscription : avril 2004 Messages : 305 ![]() |
on m'a aussi parlé de l'utilisation des SEH sous XP et d'une fonctionalité apparue sous Vista :
http://msdn.microsoft.com/fr-fr/visualc/bb870268 perso, j'aimerais bien savoir comment le faire avec les SEH.
__________________
L'Opus attire les Prélats |
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() |
Pour Watson, on m'a répondu: Il faut utiliser la fonction RegisterApplicationRestart().
Pour le SEH, il empêchera (temporairement) l'application de crasher, mais ne corrigera pas l'erreur et ne relancera pas le programme.
__________________
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant. "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?" Apparently everyone. -- Raymond Chen. Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen. |
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Inscription : avril 2004 Messages : 305 ![]() |
ok. Donc mon idée d'utiliser signal() pour savoir quelle erreur s'est produite, puis de relancer l'application avec execvp() ou CreateProcess() semble raisonnable.
__________________
L'Opus attire les Prélats |
|
|
00
|
|
|
#6 |
|
Expert Confirmé Sénior
![]() |
Sous Windows, RegisterApplicationRestart() est la meilleure solution.
__________________
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant. "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?" Apparently everyone. -- Raymond Chen. Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen. |
|
|
00
|
|
|
#7 |
|
Membre habitué
![]() Inscription : avril 2004 Messages : 305 ![]() |
le problème, pour moi, est que cette fonction n'existe qu'à partir de Vista, or je dois supporter Windows >= XP
__________________
L'Opus attire les Prélats |
|
|
00
|
|
|
#8 |
|
Membre habitué
![]() Inscription : avril 2004 Messages : 305 ![]() |
J'ai aussi trouvé ceci sur Codeproject:
http://www.codeproject.com/KB/except...?display=Print Ca m'aidera, je pense (et si ça peut aider d'autres personnes...)
__________________
L'Opus attire les Prélats |
|
|
00
|
|
|
#9 |
|
Expert Confirmé Sénior
![]() |
Euh... Là, je ne comprends plus rien. Comment cette fonction peut-elle être Vista-only alors que Visual y arrive sous XP?
__________________
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant. "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?" Apparently everyone. -- Raymond Chen. Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen. |
|
|
00
|
|
|
#10 |
|
Membre habitué
![]() Inscription : avril 2004 Messages : 305 ![]() |
__________________
L'Opus attire les Prélats |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com