如何获取Java进程的ID?
我知道有几种与平台相关的黑客,但是我希望有一个更通用的解决方案。
ManagementFactory.getRuntimeMXBean().getName()看起来是最好的(最近的)解决方案。它很短,并且可能在广泛使用的所有实现中起作用。
ManagementFactory.getRuntimeMXBean().getName()
在linux + windows上,它返回一个类似12345@hostname(12345是进程ID)的值。但是请注意,根据docs,不能保证该值:
linux + windows
12345@hostname
返回代表正在运行的Java虚拟机的名称。返回的名称字符串可以是任意字符串,并且Java虚拟机实现可以选择在返回的名称字符串中嵌入特定于平台的有用信息。每个正在运行的虚拟机可以具有不同的名称。
在Java 9中,可以使用新的流程API:
long pid = ProcessHandle.current().pid();