Par exemple, l'appel exit(100)
quitte l'application avec l'état 100 et l'appel raise(SIGABRT)
abandonne l'application avec l'état 134 lors de la création d'une image mémoire principale. Mais que faire si je veux le vidage de base avec le statut 100 ou toute autre valeur arbitraire. Comment puis je faire ça ? Je sais qu'il y a plusieurs signaux qui déclenchent un core dump, mais ils semblent avoir des statuts de sortie fixes.Définition de l'état de sortie lors de la création du core dump
1
A
Répondre
2
On dirait 134
égal à (128+6)
et euqals à ((1<<7) | 6)
(où #define SIGABRT 6
)
Co-incidence?
+1
Pas de coïncidence, voir http://stackoverflow.com/questions/1101957/1104641#1104641 et autres. – ephemient
2
Eh bien, je suppose que vous pourriez fork()
et que l'appel parent _exit(100)
, et l'appel enfant abort()
...
Je suis d'accord avec les commentaires disant que c'est une mauvaise idée, cependant.
Pourquoi le feriez-vous? Tout le point est de pouvoir dire si elle est sortie avec le dumping de base. La plupart des programmes qui prêtent attention aux statuts de sortie doivent simplement différencier entre zéro (succès) et non nul (échec), mais certains programmes pourraient être intéressés à savoir si cela a échoué lors du dumping du noyau, auquel cas ce code de sortie est utile. et forcer un autre code de sortie décevra les programmes qui en dépendent. –
Oui, mais ce n'est pas pour le logiciel publié, seulement pour le débogage interne afin de pouvoir classer plus facilement le vidage sans l'inspecter avec des outils externes. – Zitrax