next up previous contents
suivant: Développement monter: Conception précédent: Résolution des liens actifs   Table des matières

Programme d'indirection

À plusieurs reprises, les explications nous ont permit de comprendre que le système des liens actifs nécessite l'exécution d'un programme. L'une des contraintes de ce sujet spécifiait que le processus père demandant une résolution d'un alink (par un appel à readalink par ex) ne devait pas voir l'existence de ce fils.

Le comportement par défaut du noyau linux est d'envoyer le signal SIGCHLD au père, lorsque l'un de ses fils meurt. Il fallait donc supprimer cet envoi du signal SIGCHLD qui était une façon de percevoir l'existence d'un fils.

Une deuxième contrainte du sujet était de considérer que la sortie standard du processus d'indirection était valide, si et seulement si ce processus avait un exit status à 0.

Or lors de nos recherches, nous avons trouvé une première solution répondant à la première contrainte mais ne remplissant pas la deuxième, et inversement pour une autre solution existante. En effet, pour demander à linux de trouver l'exit status du fils, nous devons nous mettre en attente de la fin de son exécution (cf sys_wait4). Or si nous demandons au kernel de ne pas envoyer de SIGCHLD au père quand le fils meurt, le père devient incapable de se mettre en attente de la fin d'exécution du fils.

Étant donné que nous n'avons pas réussi à trouver une solution répondant aux deux contraintes, nous avons du faire un choix sur celle à remplir, et nous avons décidé de récupérer l'exit status du fils.


next up previous contents
suivant: Développement monter: Conception précédent: Résolution des liens actifs   Table des matières