gpt4 book ai didi

Java :Kill process runned by Runtime. getRuntime().exec()

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:53:04 26 4
gpt4 key购买 nike

我需要写一段代码,那

  1. 使用 Runtime.getRuntime().exec("java -jar MyServerRunner -port MYPORT"); 运行 unix 进程
  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 程序的进程,但不是我从代码运行的程序。

我怎样才能只终止我从代码运行的进程?

附言也许我应该使用 ProcessBuilder ?

最佳答案

您可以使用 destroy 终止您从 java 应用程序启动的子进程:

Process p = Runtime.getRuntime().exec("java -jar MyServerRunner -port MYPORT");
p.destroy();

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

关于Java :Kill process runned by Runtime. getRuntime().exec(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18047531/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com