我的程序正在使用exec.Command运行一个子进程(我不控制),这反过来又启动了另一个子进程。问题在于,第二个子进程不是在第一个子进程下运行,而是在原始进程下运行,如果需要的话,我没有办法明确地杀死它。而且我确实需要。

那么,有没有一种与平台无关的方式来列出子流程,以便我可以明确地清理它?

最佳答案

与平台无关的方法是使用PID files或其他类似机制。缺点是您必须获取子流程应用程序(及其供应商)才能生成必要的信息。

唯一的另一种可能性是开发自己的多平台库,因为子流程语义和与流程相关的API在平台之间会发生变化。存在的一些实用程序只是获取系统中所有进程的列表,并查询每个进程的父pid,并使用自定义逻辑构建树。

关于process - 有没有一种方法可以可靠地列出Go中的子流程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22872680/

10-13 05:31