Informazioni sui processi in Java e ProcessHandle
Ho scoperto che da Java 9 la Process API è stata implementata e migliorata.
Quindi oggi vediamo come usarla per visualizzare i processi di sistema ed eventuali process figli.
Per farlo useremo ProcessHandle:
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
Stream<ProcessHandle> liveProcesses = ProcessHandle.allProcesses();
liveProcesses.filter(ProcessHandle::isAlive)
.forEach(ph -> {
System.out.println(ph.pid() + " - " + ph.info());
Stream<ProcessHandle> chProcess = ph.children();
chProcess.forEach(ch -> {
System.out.println("CHILDREN: " + ch.info());
});
System.out.println("----------");
});
}
}
Come vedete creiamo due Stream:
- il primo per i processi principali, facendo un filtro su quelli alive
- il secondo sui figli
Prima visualiziamo il PID del processo, e poi diverse altre informazioni.
Io le ho postate tutte; ovviamente potete elaborare il risultato per estrapolare quelle che vi servono.
Potete usare ProcessHandle.Info.
Enjoy!
java process processhandle stream pid
Commentami!