ABORT |
Abordé |
|---|---|
Perl |
POSIX |
Syntaxe
| sub POSIX::abort(); |
Description
Cette fonction permet d'interrompre l'exécution du programme de façon anormale.
Remarques
- Interruption brutale du programme : La fonction POSIX::abort() permet de forcer l'arrêt immédiat du programme en cours. Contrairement à exit, elle ne suit pas la procédure normale de terminaison et ne permet pas de libérer les ressources ou d'exécuter des blocs END.
- Comportement conforme à la norme POSIX : Cette fonction s'aligne sur le comportement défini par la norme POSIX, en générant un signal SIGABRT. Cela permet à des outils de diagnostic (comme un débogueur ou un générateur de core dump) de capturer l'état du programme au moment de l'abandon.
- Utilisation dans les cas critiques : On utilise généralement abort() lorsqu'une erreur grave et irrécupérable est détectée, empêchant la poursuite de l'exécution. Par exemple, lors d'une violation de contrat logiciel ou d'une incohérence majeure interne.
- Incontournable pour les tests de robustesse : La fonction est parfois utilisée délibérément pour simuler des défaillances dans des tests de robustesse ou de tolérance aux pannes. Cela permet d'analyser comment un système ou une interface réagit à un arrêt brutal.
- Ne renvoie jamais de valeur : POSIX::abort() ne retourne jamais de contrôle au programme appelant. Une fois invoquée, elle termine immédiatement l'exécution, ce qui rend son utilisation risquée si elle est mal placée ou non conditionnée.
- Peut produire un core dump : Sur les systèmes qui le permettent, l'appel à abort() entraîne souvent la génération d'un fichier de type core dump. Ce fichier contient l'état de la mémoire du programme et peut être utilisé pour diagnostiquer les causes de l'échec.
- Peut être interceptée par un gestionnaire de signal : Il est possible d'intercepter le signal SIGABRT via un gestionnaire ($SIG{ABRT}) dans Perl. Toutefois, cela doit être fait avec prudence, car la fonction POSIX::abort() est censée signaler un état irrécupérable du programme.
- Diffère de la fonction die() : Contrairement à die(), pouvant être interceptée ou contrôlée via eval{}, POSIX::abort() ne déclenche pas de gestion d'erreur normale dans Perl. Elle échappe à tous les blocs d'exception et termine l'exécution sans appel à DESTROY ou END.
Exemple
Voici un exemple terminant le programme avant d'exécuter la deuxième impression d'un message :
on obtiendra le résultat semblable au suivant :
| Début du programme... |
Voir également
Langage de programmation - Fonction C pour Linux - abort
Dernière mise à jour : Dimanche, le 18 octobre 2015