У меня есть библиотека классов .NET, которая запускает дополнительный процесс, который продолжается до тех пор, пока я не избавлюсь от объекта.
Из-за некоторых задержек программы в памяти я решил добавить интеграционный тест, чтобы убедиться, что, если я позволю объекту перейти к GC / Finalization, этот процесс будет замедлен.
Однако, поскольку этот процесс является клиентом командной строки Mercurial, а мой сервер сборки уже запускает Mercurial как часть своих собственных операций, я предполагаю ситуации, когда Mercurial либо уже запускается при запуске этого теста, либо когда он запускается, и все еще работает, когда тест завершается, относительно сервера сборки, а не моего теста.
Итак, я хочу убедиться, что клиент Mercurial, который я нахожу (или нет), является тем, кого я запустил, а не просто любым клиентом, который в данный момент работает.
Итак, вопрос такой:
- Как я могу узнать, запущен ли клиент Mercurial, на который я смотрю, моим процессом?
«Глядя на», я смотрел на использование метода Process.GetProcesses , но это не является обязательным требованием.
Если другой вопрос лучше, «Как найти все дочерние процессы моего собственного процесса», т.е. проще ответить, что и этого более чем достаточно.
Я нашел эту страницу: Как узнать идентификатор родительского процесса для процесса? , но мне кажется, что я должен дать ему имя процесса. Если я просто скажу «hg», разве этот вопрос не слишком двусмысленный для искомого случая?