我的程序正在使用exec.Command
来运行子进程(我无法控制),这反过来又启动了另一个子进程。问题是第二个子进程没有在第一个子进程下运行,而是在原始进程中运行,如果需要,我无法明确地杀死它。我确实需要。
那么,是否有一种与平台无关的方法来列出子进程,以便我可以明确地清理它?
答案 0 :(得分:0)
平台不可知的方式是使用PID files或其他类似的机制。缺点是您必须让子流程应用程序(及其供应商)生成必要的信息。
唯一的另一种可能性是开发自己的多平台库,因为子流程语义和与流程相关的API在不同平台之间变化。存在的一些实用程序只是获取系统中所有进程的列表,并查询每个进程的父pid,并使用自定义逻辑构建树。