我的程序正在使用 exec.Command
来运行一个子进程(我无法控制),该子进程又会启动另一个子进程。问题是第二个子进程不是在第一个子进程下运行,而是在原始进程下运行,如果我需要的话,我无法明确地杀死它。我确实需要。
那么,是否有一种与平台无关的方式来列出子进程,以便我可以明确地清理它?
最佳答案
与平台无关的方法是使用 PID files ,或其他一些类似的机制。缺点是您必须让子流程应用程序(及其 vendor )生成必要的信息。
唯一的另一种可能性是开发您自己的多平台库,因为子流程语义和与流程相关的 API 因平台而异。现有的一些实用程序只是获取系统中所有进程的列表,查询每个进程的父 pid,并使用自定义逻辑构建树。
关于process - 有没有办法可靠地列出 Go 中的子流程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22872680/