Sommaire

Terminaison d’un processus Processus:terminaison

Un processus se termine par l’appel système _exit(), directement ou indirectement. Cet appel système n’échoue jamais. Le noyau termine le processus, libère toutes les ressources qui lui étaient allouées, mais peut conserver, dans certains cas, son entrée dans la table des processus.

1. Appel système _exit()

L’appel système prend comme argument une valeur entière qui sera mise à la disposition du processus parent par le noyau.

Le processus peut utiliser l’appel système _exit() ou la fonction enveloppe exit(), qui effectue quelques opérations supplémentaires avant de demander l’exécution de l’appel système proprement dit.

Syntaxe

#include <unistd.h> 
#include <stdlib.h> 
void _exit(int status);

Valeur retournée

L’appel n’échoue jamais et ne retourne donc rien, puisqu’il termine le processus. La valeur passée en argument pourra être transmise au processus parent par le noyau. Plus précisément, bien que l’argument soit de type entier, seul le dernier octet (celui de poids faible) sera transmis.

Bien que le programmeur soit libre de passer la valeur de son choix, une convention Unix veut qu’un processus qui se termine correctement retourne zéro à son processus parent. Les normes SUS proposent d’ailleurs deux constantes aux noms explicites : EXIT_SUCCESS vaut zéro, ...