os.waitpid ( )
DESCRIPTION.
Met l'exécution d'un processus en pause tant qu'un autre processus est vivant.
SYNTAXE.
TPL_Variable = os.waitpid ( processus , options )
TPL_Variable = ⇨ variable qui recevra le tuple à champs nommés [ optionnel ]
os.waitpid ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
processus ⇨ liste des objets tampons [ OBLIGATOIRE ]
options ⇨ liste des objets tampons [ OBLIGATOIRE ]
REMARQUES.
processus doit être un int ( ) correspondant au PID (Process IDentifier) du processus donc on attend la fin de l'exécution. Sous UNIX, processus doit être un processus enfant de processus utilisant la méthode os.waitpid ( ). Sous window de microsoft, processus doit être différent du processus appelant.
options doit être un int ( ) qui devraient valoir 0 dans la plupart des cas, précisant un code d'option. Sous Windows de Microsoft, cet attribut est ignoré.
Sous UNIX, une requête est introduite pour obtenir des informations sur les statut :
- de processus si processus est supérieur à 0 ;
- pour tous les processus enfants du groupe si processus est égal à 0 ;
- pour tous les processus enfants du processus appelant si processus est égal à -1 ;
- pour chaque processus du groupe ayant l'identifiant abs ( processus ) si processus est inférieur à -1 ;
Sous UNIX, à la fin de son exécution, le processus enfant retourne, à son processus parent, un tuple ( ) ayant la forme ( identifiant , signal ), où identifiant est l'identifiant du processus enfant (PID) et signal est une valeur numérique de 16 bits dont l'octect de poids faible est le nombre correspondant au signal qui a tué le processus, et dont le l'octect de poids fort est le statut de sortie (si la signal vaut 0). Le bit de poids fort du l'octect de poids faible est mis à 1 si un (fichier système) core file a été produit.
Sous Windows de Microsoft, la méthode os.waitpid ( ) retourne un tuple ( ) ayant la forme ( identifiant , signal ). Si identifiant est inférieur ou égal à 0 cela n'a aucune signification particulière. processus peut faire référence à tout processus dont l'identifiant est connu et pas nécessairement à un processus fils.
EXEMPLE.
import os
kparent = os.P_PID
kenfant = os.fork ( )
if kenfant : # si le processus en cours n'a pas retourné 0 c'est le père qui été chargé dans le CPU
print ( "Le PARENT" , os.getpid ( ) , "est en cours ... " )
print ( "Je patiente, mon enfant exécute sa tache ..." )
print ( )
kretour = os.waitpid ( kenfant , 0 )
print ( "Mon enfant s'est terminé ... " )
print ( "Il a retourné la valeur :" , kretour )
print ( "Le PARENT" , os.getpid ( ) , ": Ce processus est terminé ... " )
else : # si le processus en cours a retourné 0 c'est le fils qui été chargé dans le CPU
print ( "L'ENFANT" , os.getpid ( ) , "travail ..." )
for kvaleur in range ( 6 ) : print ( "L'ENFANT" , os.getpid ( ) , ": C'est toujours les mêmes qui travaillent ..." )
print ( )
Une fois enregistré, ce script doit être lancé depuis un terminal Linux avec la commande :
python /chemin/monscrip.py (où /chemin/monscrip.py est le nom de votre script avec son chemin).
Pour une meilleur compatibilité, chemin et nom de doivent as comporter d'espace ou de caractères spéciaux.
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
Dans la LOGITHEQUE de MON PYTHON PAS A PAS
vous trouvez des suggestions de projets simples et classiques pour
ooo
TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER
ooo
la programmation récréative avec le langage PYTHON 3
avec un exemple de résolution à télécharger pour vous inspirer.