从 Java 在 Linux 上调用 ps

在 Java 中,我使用 Runtime.exec() 启动了一个新进程,而这个进程又产生了几个子进程。


我希望能够杀死所有进程,并且之前一直在尝试process.destroy()和process.destroyForcibly()- 但文档说destroyForcibly()只是调用destroy()默认实现并且destroy()可能不会杀死所有子进程(我已经尝试过并且它显然不会杀死子进程)。


我现在正在尝试不同的方法,使用此处建议的方法查找父进程的 PID,然后ps重复调用以遍历子进程的 PID,然后使用kill. (它只需要在 Linux 上运行)。


我已经管理了第一位 - 查找 PID,并尝试使用以下命令调用 ps 来获取子 PID:


String command = "/bin/ps --ppid " + pid;

Process process = new ProcessBuilder(command).start();

process.waitFor();

不幸的是,上面的第二行抛出了一个 IOException,带有以下消息: java.io.IOException: Cannot run program "/bin/ps --ppid 21886": error=2, No such file or directory


如果我将它直接粘贴到 Ubuntu 16.04 上的终端中,该命令运行良好。


任何想法将不胜感激。


墨色风雨
浏览 289回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java