【问题标题】:java exec return PID in Windowsjava exec在Windows中返回PID
【发布时间】:2011-04-06 22:41:23
【问题描述】:

在 linux 中我可以运行:

System.exec('echo test & echo $1');

这将返回我已执行的命令的进程 ID。如何将类似的方法转换为 Windows?允许我执行命令并返回其 PID。

需要明确的是,我不是在寻找我的 JAVA 应用程序的 PID。我正在寻找由 JAVA 使用 System.exec 生成的外部应用程序的进程 ID。

谢谢

【问题讨论】:

  • 你能补充一下你为什么需要这个吗?也许有更好的解决方案适用于所有操作系统。
  • 即使 Java 终止,我也希望能够跟踪应用程序的进程 ID。这样有问题的 PID 可能会在以后终止。我目前正在查看进程列表,以查看哪个是最后一个开始的,但我不确定这将是多么可靠的解决方案,即使 $!执行相同的功能。

标签: java windows


【解决方案1】:

试试 jps - Java 虚拟机进程状态工具

jps

18027 Java2Demo.JAR

18032 日元

18005 jstat

【讨论】:

  • 执行的命令看起来不像是 JVM。
【解决方案2】:

一种解决方案使用 RuntimeMXBean。 bean 的名称包含 pid(例如 12345@localhost)。

警告:返回的名称字符串可以是任意字符串,Java 虚拟机实现可以选择在返回的名称字符串中嵌入特定于平台的有用信息。

在 Sun JVM(Windows 平台)上,存在 PID。

String processName =
  java.lang.management.ManagementFactory.getRuntimeMXBean().getName();
System.out.println(processName.split("@")[0]);

【讨论】:

    【解决方案3】:

    我的问题不是关于返回 java 进程的 PID,而是关于外部应用程序。最后,我不得不使用 C++ 遍历系统进程按开始时间排序以返回最新进程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多