我有一个 .NET 类库,它启动了一个辅助进程,该进程一直运行,直到我处理掉对象。
由于某些程序在内存中徘徊,我决定添加一个集成测试,以确保如果我让对象进入 GC/Finalization,该过程会被停止。
但是,由于该进程是 Mercurial 命令行客户端,并且我的构建服务器已经在运行 Mercurial 作为其自身操作的一部分,因此我设想在测试开始时 Mercurial 已经在运行,或者它已启动但仍在运行的情况运行,当测试完成时,与构建服务器相关,而不是我的测试。
所以,我想确保我找到(或不是)的 Mercurial 客户端是我启动的客户端,而不仅仅是当前正在运行的任何客户端。
所以问题是这样的:
- 如何确定我正在查看的 Mercurial 客户端是否由我的流程启动?
通过“查看”,我正在查看使用Process.GetProcesses方法,但这不是必需的。
如果另一个问题更好,“如何找到我自己进程的所有子进程”,即。更容易回答,一个也绰绰有余。
我找到了这个页面:如何知道进程的父进程 ID?,但似乎我必须给它进程名称。如果我只是给它“hg”,那么对于我正在寻找的案例来说,这个问题是不是太模棱两可了?