==================================================================== Modification le : Mon Nov 15 19:16:12 MET 1999 Par : ==================================================================== Update of /users/outil1/alliance/cvsroot/alliance/sources/mbk In directory valse:/tmp/cvs-serv24243 Modified Files: mbk_sys.c mbk_sys.h mbk_util.c mut325.h Log Message: Ajout de la fonction mbkwaitpid( int pid, int mode, int *status ) PROBLEME : Comme plusieurs fonctions sont suceptibles de faire un appel a wait() pour retirer les process zombi et prendre en compte les valeurs de retour, il faut trouver un moyen de recuperer le code de retour d'un processus particulier sans eliminer d'autres processus zombi en attente. L'appel a la primitive waitpid() ne permet pas de contourner ce probleme car dans certains cas on a pas besoin de consulter la valeur de retour, mais par contre il faut eliminer ces processus zombi sans faire d'appel explicite a wait(). C'est le cas de mbkpopen. SOLUTION : On centralise la terminaison des processus par un handler mbkackchld(). Dans cette fonction appellee lors de la reception du signal SIGCHLD, on memorise dans un liste le pid du process qui vient de se terminer et son code de retour, et le processus termine est efface de la liste des processus. Pour l'utilisateur, la consultation du code de retour se fait par la fonction mbkwaitpid. Le parametre "pid" est le numero du processus que l'on attend. si mode=1, l'appel a cette fonction est bloquant, sinon il est non bloquant. dans ce cas la valeur de retour vaut 1 si le processus etait fini, 0 sinon. Le pointeur status contiendra si il est different de NULL le code de retour du processus elimine. COMMENTAIRE : C'est a peu pres teste sur de petits exemples... En principe, on est blinde contre l'interruption des appels systemes de haut niveaux (fgets). EVOLUTION (a discuter) : Permettre l'ajout d'un handler particulier pour chaque processus. ==================================================================== Ce message est envoyé au personnes abonnées à alliance-programmers Pour plus d'information sur cette mailling-list, visitez : http://asim.lip6.fr/alliance/mailing-lists/