Java 9 - Mejoras en la API de procesos
En Java 9 Process API, que es responsable de controlar y administrar los procesos del sistema operativo, se ha mejorado considerablemente. ProcessHandle Class ahora proporciona el ID de proceso nativo del proceso, la hora de inicio, el tiempo de CPU acumulado, los argumentos, el comando, el usuario, el proceso principal y los descendientes. La clase ProcessHandle también proporciona un método para verificar la actividad de los procesos y destruir procesos. Tiene el método onExit, la clase CompletableFuture puede realizar acciones de forma asíncrona cuando finaliza el proceso.
Probador.java
import java.time.ZoneId; import java.util.stream.Stream; import java.util.stream.Collectors; import java.io.IOException; public class Tester { public static void main(String[] args) throws IOException { ProcessBuilder pb = new ProcessBuilder("notepad.exe"); String np = "Not Present"; Process p = pb.start(); ProcessHandle.Info info = p.info(); System.out.printf("Process ID : %s%n", p.pid()); System.out.printf("Command name : %s%n", info.command().orElse(np)); System.out.printf("Command line : %s%n", info.commandLine().orElse(np)); System.out.printf("Start time: %s%n", info.startInstant().map(i -> i.atZone(ZoneId.systemDefault()) .toLocalDateTime().toString()).orElse(np)); System.out.printf("Arguments : %s%n", info.arguments().map(a -> Stream.of(a).collect( Collectors.joining(" "))).orElse(np)); System.out.printf("User : %s%n", info.user().orElse(np)); } }
Salida
Verá el siguiente resultado.
Process ID : 5800 Command name : C:\Windows\System32\notepad.exe Command line : Not Present Start time: 2017-11-04T21:35:03.626 Arguments : Not Present User: administrator
Java