
Quand vous saurez la littérature effroyable que lisent les informaticiens dans le cadre de leur travail, vous n’en reviendrez pas :
unless (kill 0 => $pid_fils )Fossoyage des zombies.
{warn « quelque chose d’affreux est arrivé à $pid_fils » ;
Lorsqu’un processus se termine, son père reçoit un signal CHILD envoyé par le noyau et le processus devient zombie jusqu’à ce que le parent appelle wait ou waitpid.
Et oui ! Lustucru ? Plus loin :
Perl peut s’occuper de fossoyer vos fils zombies, mais si vous utilisez un fork pur, vous êtes censés nettoyer derrière vous. Sur la plupart des noyaux, mais pas tous, une bidouille simple pour fossoyer automatiquement les zombies consiste à positionner $SIG{CHILD} à ‘IGNORE’. Une approche plus souple (mais fastidieuse) est de les fossoyer vous-mêmes. Comme il se peut qu’il y ait plus d’un fils qui soit mort avant que vous vous en occupiez, vous devez rassembler vos zombies dans une boucle jusqu’à ce qu’il n’y en ait plus :
use POSIX « :queue » ; etc.On en arrive pratiquement à la sodomisation de cadavres.
Étonnant non ? C’est très sérieux vous savez ! Ref. Larry Wall. Programmation en Perl. O’Reilly. Paris. 2001. pp. 387.
LVC
Aucun commentaire:
Enregistrer un commentaire