如何查找在 java 中启动的进程的进程 ID (pid)?

2022-09-02 04:38:14

如果我通过 得到一个 Java 中的进程对象,或者,我可以等待它通过 ,这就像 ,或者我可以用 杀死它,这就像弃用的。Runtime.getRuntime().exec(...)ProcessBuilder.start()Process.waitFor()Thread.join()Process.destroy()Thread.stop()

但是:如何找到流程对象的 pid?我在官方文档中没有看到这样做的方法。我可以在Java中执行此操作吗?如果是这样,如何?


答案 1

这家伙喊着要打打以获得PID。我不确定是否有java解决方案来解决这个问题。

/**
 * Gets a string representing the pid of this program - Java VM
 */
public static String getPid() throws IOException,InterruptedException {

  Vector<String> commands=new Vector<String>();
  commands.add("/bin/bash");
  commands.add("-c");
  commands.add("echo $PPID");
  ProcessBuilder pb=new ProcessBuilder(commands);

  Process pr=pb.start();
  pr.waitFor();
  if (pr.exitValue()==0) {
    BufferedReader outReader=new BufferedReader(new InputStreamReader(pr.getInputStream()));
    return outReader.readLine().trim();
  } else {
    System.out.println("Error while getting PID");
    return "";
  }
}

资料来源:http://www.coderanch.com/t/109334/Linux-UNIX/UNIX-process-ID-java-program


答案 2

与提到的其他工具类似,Java 运行时附带了命令行工具。它吐出所有正在运行的JVM的PID。好处是需要解析的输出仅限于JVM进程。jps


推荐