next up previous contents
suivant: Exemple monter: Spécifications précédent: Les alink   Table des matières

Les programmes d'indirection

Un processus d'indirection, instance d'exécution d'un programme d'indirection, doit être considéré comme un fils du programme ayant accédé au alink. Il hérite donc de tout son environnement d'exécution, à deux exceptions près :

$\bullet$
Le descripteur de fichier 0 est fermé

$\bullet$
Le descripteur de fichier 1 n'est pas le même que celui du processus appelant. C'est un descripteur ouvert en écriture, sur lequel le programme d'indirection écrit le résultat de la résolution du alink. Ce résultat sera utilisé verbatim par le noyau.

Le programme d'indirection prend un argument sur la ligne de commande, qui est le nom de l'alink qui a causé son exécution. Son code de retour doit être 0 pour que l'appel système nécessitant une résolution d'alink retourne avec succès. Tout autre code de retour provoquera un échec de l'appel système ; la variable errno devra alors avoir une valeur significative, justifiée, et conforme à la spécification de l'appel système.

À l'inverse d'un véritable fils du processus appelant, un processus d'indirection doit être parfaitement invisible pour le processus appelant. En particulier, sa mort ne doit jamais provoquer de SIGCHLD, et le PID du processus d'indirection ne doit jamais être renvoyé si le processus appelant effectue un appel système de type wait.


next up previous contents
suivant: Exemple monter: Spécifications précédent: Les alink   Table des matières