一尘不染

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

java

如何获取Java进程的ID?

我知道有几种与平台相关的黑客,但是我希望有一个更通用的解决方案。


阅读 573

收藏
2020-02-28

共1个答案

一尘不染

ManagementFactory.getRuntimeMXBean().getName()看起来是最好的(最近的)解决方案。它很短,并且可能在广泛使用的所有实现中起作用。

linux + windows上,它返回一个类似12345@hostname(12345是进程ID)的值。但是请注意,根据docs,不能保证该值:

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

在Java 9中,可以使用新的流程API:

long pid = ProcessHandle.current().pid();
2020-02-28