【问题标题】:How can I get the PID of my Java application at runtime? [duplicate]如何在运行时获取 Java 应用程序的 PID? [复制]
【发布时间】:2021-11-15 17:27:23
【问题描述】:

我正在运行一个简单的 Java 应用程序,如下所示:

class MyApp 
{
    public static void main(String[] args) 
    {
        // Do stuff
    }
}

现在我想从 main() 函数中获取此应用程序的进程 ID (PID),以便将其保存到文件中。如何以独立于平台的方式做到这一点?


编辑:Stackoverflow 上的现有解决方案已有多年历史,今天可能存在更好的解决方案。这就是我问这个问题的原因。


编辑 2:我更喜欢不需要 Java 9 的解决方案。

【问题讨论】:

  • @matt 谢谢。见编辑
  • 你用的是哪个jdk版本?
  • 现在确实存在更好的解决方案。但他们需要 java 9。链接的答案是 java 8 中最好的答案——他们没有对其进行大量更改。
  • 所以你想要更新的解决方案,但又不想使用更新的 jdk?是什么让您认为如果您不更新 jdk,更新的解决方案会起作用?
  • 另外,根据您启动程序的方式,在启动时写入文件可能更简单。 serverfault.com/questions/205498/… 类似的东西,但通过管道传输到文件。

标签: java pid


【解决方案1】:

您可以通过关注获取PID

ManagementFactory.getRuntimeMXBean().getSystemProperties().get("PID")

或者

System.getProperty("PID");

【讨论】:

    【解决方案2】:

    我的运行环境是jdk6

    import java.lang.management.ManagementFactory;
    public static void main(String[] args) {
        String name = ManagementFactory.getRuntimeMXBean().getName();
        System.out.print(name.split("@")[0]);
    }
    

    【讨论】:

      【解决方案3】:

      使用 RuntimeMXBean

      RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean();
      long pid = runtime.getPid();
      

      【讨论】:

      • 这仅适用于 Java 9 吗?我看不到那个方法 getPid()
      猜你喜欢
      • 2015-10-25
      • 1970-01-01
      • 2017-08-13
      • 2010-10-19
      • 1970-01-01
      • 2011-05-01
      • 2011-02-01
      • 2018-03-21
      • 1970-01-01
      相关资源
      最近更新 更多