J'aurais aimé savoir s'il y avait une façon sioux de réccupérer la liste
des PID des ascendants d'un process?
Je comptais utiliser Process32First et Process32Next, mais ça n'est pas
dispo sur NT. Or, je cherche quelque chose qui serait valable de Windows
95 à nos jours...
Arnaud a raison et sous Win9X, c'est pareil. Sous Win32, il y a une notion d'héritage des handles mais pas de filiation.
Le risque de recyclage peu être éliminé par programme si le
processus
"fils" garde une référence en permanence sur le processus "parent".
Tant
que le CloseHandle sur le handle du processus "parent" n'est pas
fait,
l'objet kernel n'est pas détruit et le PID ne sera pas recyclé
même si
le programme en question est terminé.
Oui, mais comment tu fais pour passer le handle du parent au fils? Pour être sûr, il faudrait que le père ouvre un handle héritable sur lui-même et qu'il passe la valeur de ce handle au fils lors de sa création (paramètre en ligne de commande par exemple). Même comme çà, il n'est pas dit que le père ne se termine pas avant que fils commence son main()...
Arnaud MVP - VC
Patrick Philippot wrote:
Arnaud a raison et sous Win9X, c'est pareil. Sous Win32, il y a une
notion d'héritage des handles mais pas de filiation.
Le risque de recyclage peu être éliminé par programme si le
processus
"fils" garde une référence en permanence sur le processus "parent".
Tant
que le CloseHandle sur le handle du processus "parent" n'est pas
fait,
l'objet kernel n'est pas détruit et le PID ne sera pas recyclé
même si
le programme en question est terminé.
Oui, mais comment tu fais pour passer le handle du parent au fils? Pour
être sûr, il faudrait que le père ouvre un handle héritable sur
lui-même et qu'il passe la valeur de ce handle au fils lors de sa
création (paramètre en ligne de commande par exemple). Même comme
çà, il n'est pas dit que le père ne se termine pas avant que fils
commence son main()...
Arnaud a raison et sous Win9X, c'est pareil. Sous Win32, il y a une notion d'héritage des handles mais pas de filiation.
Le risque de recyclage peu être éliminé par programme si le
processus
"fils" garde une référence en permanence sur le processus "parent".
Tant
que le CloseHandle sur le handle du processus "parent" n'est pas
fait,
l'objet kernel n'est pas détruit et le PID ne sera pas recyclé
même si
le programme en question est terminé.
Oui, mais comment tu fais pour passer le handle du parent au fils? Pour être sûr, il faudrait que le père ouvre un handle héritable sur lui-même et qu'il passe la valeur de ce handle au fils lors de sa création (paramètre en ligne de commande par exemple). Même comme çà, il n'est pas dit que le père ne se termine pas avant que fils commence son main()...
Arnaud MVP - VC
Patrick Philippot
wrote:
Oui, mais comment tu fais pour passer le handle du parent au fils? Pour être sûr, il faudrait que le père ouvre un handle héritable sur lui-même et qu'il passe la valeur de ce handle au fils lors de sa création (paramètre en ligne de commande par exemple). Même comme çà, il n'est pas dit que le père ne se termine pas avant que fils commence son main()...
Salut Arnaud,
Il est certain qu'il faut à un moment donné un mécanisme d'IPC quelconque. Mais une API comme DuplicateHandle peut aider. Le processus créateur peut créer un duplicate pour le processus "fils" (puisqu'il peut obtenir facilement son handle) et le mettre à sa disposition "quelque part" au moment du lancement. Le "quelque part" étant à définir...
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr
adebaene@club-internet.fr wrote:
Oui, mais comment tu fais pour passer le handle du parent au fils?
Pour être sûr, il faudrait que le père ouvre un handle héritable sur
lui-même et qu'il passe la valeur de ce handle au fils lors de sa
création (paramètre en ligne de commande par exemple). Même comme
çà, il n'est pas dit que le père ne se termine pas avant que fils
commence son main()...
Salut Arnaud,
Il est certain qu'il faut à un moment donné un mécanisme d'IPC
quelconque. Mais une API comme DuplicateHandle peut aider. Le processus
créateur peut créer un duplicate pour le processus "fils" (puisqu'il
peut obtenir facilement son handle) et le mettre à sa disposition
"quelque part" au moment du lancement. Le "quelque part" étant à
définir...
--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Oui, mais comment tu fais pour passer le handle du parent au fils? Pour être sûr, il faudrait que le père ouvre un handle héritable sur lui-même et qu'il passe la valeur de ce handle au fils lors de sa création (paramètre en ligne de commande par exemple). Même comme çà, il n'est pas dit que le père ne se termine pas avant que fils commence son main()...
Salut Arnaud,
Il est certain qu'il faut à un moment donné un mécanisme d'IPC quelconque. Mais une API comme DuplicateHandle peut aider. Le processus créateur peut créer un duplicate pour le processus "fils" (puisqu'il peut obtenir facilement son handle) et le mettre à sa disposition "quelque part" au moment du lancement. Le "quelque part" étant à définir...
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr