在Linux中,我可以运行:
System.exec('echo test & echo $1');
这将返回我执行的命令的进程ID。 如何将类似的方法转换成Windows? 允许我执行一个命令并返回它的PID。
只是要清楚,我不是在寻找我的JAVA应用程序的PID。 我正在查找使用System.exec
由JAVA产生的外部应用程序的进程ID。
谢谢
尝试jps – Java虚拟机进程状态工具
JPS
18027 Java2Demo.JAR
18032 jps
18005 jstat
一个解决方案使用RuntimeMXBean。 bean的名称包含pid(例如12345 @ localhost)。
警告:返回的名称字符串可以是任意字符串,Java虚拟机实现可以选择将特定于平台的有用信息嵌入到返回的名称字符串中。
在Sun JVM(Windows平台)上,存在PID。
String processName = java.lang.management.ManagementFactory.getRuntimeMXBean().getName(); System.out.println(processName.split("@")[0]);
我的问题不是关于返回java进程的PID,而是外部应用程序。 最后,我不得不使用C ++遍历系统进程按开始时间排序,以返回最新进程。