Tengo una biblioteca de clases .NET que activa un proceso secundario que se ejecuta hasta que elimino el objeto.Buscar todos los procesos secundarios de mi propio proceso .NET/averiguar si un proceso determinado es hijo propio.
Debido a algunas ocurrencias del programa persistente en la memoria, he decidido agregar una prueba de integración para asegurar que si dejo que el objeto caduque en GC/Finalización, ese proceso se desactiva.
Sin embargo, dado que el proceso es el cliente de línea de comandos de Mercurial, y mi servidor de compilación ya está ejecutando Mercurial como parte de sus propias operaciones, imagino situaciones en las que Mercurial ya se está ejecutando cuando se inicia esa prueba o cuando se inicia , y aún se está ejecutando, cuando finaliza la prueba, en relación con el servidor de compilación, y no con mi prueba.
Por lo tanto, quiero asegurarme de que el cliente de Mercurial que encuentro (o no) es el que inicié, y no solo cualquier cliente que se está ejecutando actualmente.
Así que la pregunta es la siguiente:
- ¿Cómo puedo saber si el cliente Mercurial estoy mirando fue iniciado por mi proceso?
Al "mirar", estaba usando el método Process.GetProcesses, pero esto no es un requisito.
Si una pregunta diferente es mejor, "Cómo encontrar todos procesos secundarios de mi propio proceso", es decir. más fácil de responder, ese es más que suficiente también.
Encontré esta página: How I can know the parent process ID of a process?, pero parece que tengo que darle el nombre del proceso. Si solo le doy "hg", ¿no es esa pregunta demasiado ambigua para el caso que estoy buscando?
Esto funcionó muy bien para mí, aunque opté por un enfoque más simple usando
ManagementObject
y ningún buscador. He estado luchando con matar a mis subprocesos durante un tiempo, ¡gracias! – DarkhydroSalvavidas !!!!!! – mstrewe