java exec returnerer PID i Windows

Indlæg af Hanne Mølgaard Plasc

Problem



I Linux kan jeg køre:


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


Hvilket vil returnere proces-id'en af ​​den kommando, jeg har udført. Hvordan kan et lignende problem oversættes til Windows? Tillader mig at udføre en kommando og returnere sin PID.


Bare for at være klar, søger jeg ikke PID i min JAVA-applikation. Jeg leder efter proces-id'et til en ekstern applikation udgivet af JAVA ved hjælp af System.exec.


Tak

Bedste reference


prøv jps - Java Virtual Machine Process Status Tool


JPS


18027 Java2Demo.JAR


18032 jps


18005 jstat

Andre referencer 1


En løsning bruger RuntimeMXBean. Bønens navn indeholder pid (ex 12345 @ localhost).


Advarsel: Den returnerede navnestreng kan være en hvilken som helst vilkårlig streng, og en implementering af virtuel Java-maskine kan vælge at indlejre platformspecifikke nyttige oplysninger i det returnerede navnestreng.


På Sun JVM (Windows-pladeform) er PID til stede.


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

Andre referencer 2


Mit spørgsmål handlede ikke om at returnere PID til java-processen, men snarere eksterne applikationer. Til sidst måtte jeg bruge C ++ til at gentage gennem systemet processer sortering efter deres starttid for at returnere den nyeste proces.