Trouver tous les processus enfants de mon propre .NET de processus et de savoir si un processus est un enfant de mon propre?
J'ai un .NET bibliothèque de classe qui lance un processus secondaire qui est maintenu en marche jusqu'à ce que je disposer de l'objet.
En raison de certains événements du programme en attente dans la mémoire, j'ai décidé d'ajouter un test d'intégration pour s'assurer que si je laisse l'objet de déchéance de GC/Finalisation, ce processus est mis en veille.
Cependant, puisque le processus est l'Mercurial client en ligne de commande, et mon serveur de développement est déjà en cours d'exécution Mercurial dans le cadre de ses propres opérations, j'ai envisager des situations où Mercurial est déjà en cours d'exécution lorsque le test commence, ou qu'il est démarré, et est toujours en cours d'exécution, une fois le test terminé, en ce qui concerne le serveur de build, et pas de mon essai.
Donc, je veux assurez-vous que l'Mercurial client je trouve (ou pas), j'ai commencé, et pas seulement tout client qui est actuellement en cours d'exécution.
Donc la question est: est-ce
- Comment puis-je savoir si l'Mercurial client que je suis en train de regarder a commencé par mon processus?
En "regardant", j'ai été à la recherche à l'aide de la Processus.GetProcesses méthode, mais ce n'est pas une exigence.
Si une question différente, c'est mieux, "Comment trouver tous processus enfants de mon propre processus", c'est à dire. plus facile à répondre, c'est plus que suffisant.
J'ai trouvé cette page: Comment je peux savoir que le parent de l'ID de processus du processus?, mais il semble que j'ai pour lui donner le nom de ce processus. Si je viens de la donner "hg", n'est pas qu'une question trop ambigus pour le cas, je suis à la recherche d'?
OriginalL'auteur Lasse Vågsæther Karlsen | 2011-08-25
Vous devez vous connecter pour publier un commentaire.
comme il arrive, j'ai un peu de C#/code WMI qui traînent, qui tue tous les processus engendré par un id de processus, de manière récursive. le meurtre n'est évidemment pas ce que vous voulez, mais la constatation de processus enfants semble être ce que vous êtes intéressé dans. J'espère que c'est utile:
La vie de veille!!!!!!
OriginalL'auteur mtijn
Bien que le réponse de mtijn est probablement le plus proche que vous pouvez obtenir, la vraie réponse est: vous ne pouvez pas.
Windows ne permet pas de maintenir un processus réel de l'arbre où les processus sont re-structuré d'un processus à un niveau intermédiaire meurt. Cependant, Windows ne rappelez-vous le parent de l'ID de processus.
Le cas problématique est la suivante:
Origine du processus de la structure:
Si maintenant SubApp.exe se termine, le processus parent ID de Second.exe ne sera pas mis à jour. Le nouveau résultat est
Vous pouvez le vérifier à l'aide de SysInternals Process Explorer. Il est capable de montrer le processus, comme un arbre. Start CMD, puis tapez
start cmd
. Dans la nouvelle fenêtre, tapezstart cmd
de nouveau. Vous aurez 3 fenêtres ouvertes. Maintenant mettre fin à la moyenne.OriginalL'auteur Thomas Weller