Ho una libreria di classi .NET che gira su un processo secondario che viene mantenuto in esecuzione fino a quando non dispongo dell'oggetto.Trova tutti i processi figli del mio processo .NET/scopri se un dato processo è un mio figlio?
A causa di alcune occorrenze del programma che persistono in memoria, ho deciso di aggiungere un test di integrazione per garantire che se lascio che l'oggetto si imposti su GC/Finalization, tale processo viene centrifugato.
Tuttavia, poiché il processo è il client della riga di comando di Mercurial e il mio build server sta già eseguendo Mercurial come parte delle proprie operazioni, immagino le situazioni in cui Mercurial è già in esecuzione all'avvio del test o che è stato avviato , ed è ancora in esecuzione, al termine del test, in relazione al build server, e non al mio test.
Quindi, voglio assicurarmi che il client Mercurial che trovo (o meno) sia quello che ho avviato, e non solo qualsiasi client attualmente in esecuzione.
Quindi la domanda è questa:
- Come posso sapere se il cliente Mercurial sto guardando è stato avviato da mio processo?
Per "guardare", stavo cercando di utilizzare il metodo Process.GetProcesses, ma questo non è un requisito.
Se una domanda diversa è meglio, "Come trovare tutti i processi figlio del mio processo", vale a dire. più facile rispondere, anche quello è più che sufficiente.
Ho trovato questa pagina: How I can know the parent process ID of a process?, ma sembra che devo dargli il nome del processo. Se mi limito a dargli "hg", questa domanda non è ambigua per il caso che sto cercando?
Questo ha funzionato magnificamente per me, anche se ho optato per un approccio più semplice usando
ManagementObject
e nessun ricercatore. Avevo lottato per uccidere i miei sottoprocessi per un po ', grazie! – DarkhydroLife saver !!!!!! – mstrewe