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

问题:

如何获取我的Java进程的id?我知道有几个平台依赖的黑客,但我更喜欢一个更通用的解决方案。

回答:

没有平台无关的方式可以保证在所有jvm实现中工作。
 ManagementFactory.getRuntimeMXBean().getName()看起来像最好的(最接近的)解决方案。很简单,probably在广泛使用的每个实施中都有效。
在linux + windows上,它返回像12345@hostname12345为进程ID)的值。请注意according to the docs,这个价值不能保证:

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

 在Java 9中可以使用新的process API

long pid = ProcessHandle.current().getPid();

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How can a Java program get its own process ID?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

65 + = 75