Java:由Runtime.getRuntime()运行的Kill进程.exec()

use*_*434 6 java unix process

我需要编写一个代码

  1. 运行unix进程 Runtime.getRuntime().exec("java -jar MyServerRunner -port MYPORT");
  2. 通过执行java代码中的命令查找进程的PID lsof -t -i: MYPORT
  3. 并通过pid杀死他kill -9 PID(也可以通过执行java代码中的命令)
  4. 然后执行其他命令

如果我通过Runtime.getRuntime().exec()我的程序退出执行此命令退出代码137 - 这意味着当我运行时Runtime.getRuntime().exec("kill -9 PID")我杀死我的java程序的进程,但不是程序,我从代码运行.

我怎样才能杀死我从代码运行的进程?

PS也许我应该使用ProcessBuilder?

ass*_*ias 11

您可以使用以下命令终止从Java应用程序启动的子进程destroy:

Process p = Runtime.getRuntime().exec("java -jar MyServerRunner -port MYPORT");
p.destroy();
Run Code Online (Sandbox Code Playgroud)

另请注意,在单独的线程中运行其他代码而不是在单独的进程中运行可能是有意义的.