Java程序如何获得自己的进程ID?

如何获取Java进程的id

我知道有几种依赖于平台的黑客,但我更喜欢一种更通用的解决方案

不存在能够保证在所有jvm实现中工作的独立于平台的方法。
ManagementFactory.getRuntimeMXBean().getName()看起来是最好(最接近)的解决方案,通常包括PID。它很短,可能适用于广泛使用的每个实现

在linux+windows上,它返回一个类似[email protected]12345为流程id)。尽管如此,还是要小心根据文件,无法保证该值:

返回表示正在运行的Java虚拟机的名称。这个
返回的名称字符串可以是任意字符串和Java虚拟字符串
机器实现可以选择嵌入特定于平台的有用信息
返回的名称字符串中的信息。每个正在运行的虚拟机
可能有不同的名字

在Java 9中新的过程API可用于:

长pid=ProcessHandle.current().pid();

发表评论