[Os.Fork()] Récupérer le Pid exact d'un processus enfant
11 réponses
kilian
Bonjour à tous,
J'ai un petit problème avec les fork sous Python, c'est la première fois
que j'utilise les fork d'ailleurs....
Pour commencer j'utilise Python2.3 sous Debian Sarge.
Pour résumer, j'ai deux fichiers bash, l'un télécharge un flux mms:// ,
il s'appele dwl_raw
L'autre encode le fichier wave extrait, il s'appele raw_encode.
Le fonctionnement général du programme ne pose aucun problème. En gros
il télécharge le flux pendant 30 secondes (avec mplayer). Puis
l'encodage se fait. Ensuite on kill le processus de téléchargement de
flux. On efface le fichier wave, et on recommence en incrémentant le nom
du fichier.
Ce qui me pose problème, c'est qu'on moment du kill(), la variable
balance contient un pid erronné.Donc le kill ne se fait pas (ou pas au
bon processus).
Exemple:
Je lance mon fichier Python.
Le téléchargement de mplayer se passe bien.
En tapant dans un shell bash:
ps aux | grep mplayer
J'ai deux processus mplayer:
16207 et 16208 (je ne sais pas pourquoi deux processus, mais bon ça a
l'air normal).
Je précise que j'ai rajouté :
print "\n\n Kill: "+str(balance)+"\n\n\n"
Juste au dessus du os.kill()
Donc au moment du kill j'ai ceci d'affiché:
kill: 16205
Donc ce n'est pas le même pid que celui (ou "ceux" finalement) de Mplayer.
Donc la boucle continue en rajoutant deux processus de Mplayer (ça fait
quatre). Et ça continue comme ça : j'en ai 6, 8 etc... Car le kill se
fait sur un pid erronné.
Mais je ne vois pas où est mon erreur. Ce n'est pas comme ça qu'on
récupère le pid d'un processus enfant?