如何获得进程的PID我刚刚开始在Java程序内?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (12)

我已经用下面的代码开始了一个过程

 ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "path");
 try {
     Process p = pb.start();       
 } 
 catch (IOException ex) {}

现在我需要知道我刚刚开始的流程的PID。

提问于
用户回答回答于

目前还没有公共API。

作为解决方法:

Runtime.exec(...)

返回一个类型的对象

java.lang.Process

Process类是抽象的,你得到的是Process的一些子类,它是为你的操作系统设计的。例如在Mac电脑上,它会返回java.lang.UnixProcess一个名为private的字段pid。使用反射,您可以轻松获得该字段的值。无可否认这是一种破解,但它可能有帮助。PID无论如何你需要什么?

用户回答回答于

这个页面有HOWTO:

http://www.golesny.de/p/code/javagetpid

在Windows上:

Runtime.exec(..)

返回“java.lang.Win32Process”的实例)或“java.lang.ProcessImpl”

两者都有私人领域的“处理”。

这是该进程的OS句柄。你将不得不使用这个+ Win32 API来查询PID。该页面详细介绍了如何做到这一点。

扫码关注云+社区