API moderna de procesos
Inspecciona y gestiona procesos del sistema operativo con ProcessHandle.
Comparación de Código
✕ Java 8
Process p = Runtime.getRuntime()
.exec("ls -la");
int code = p.waitFor();
// no way to get PID
// no easy process info
✓ Java 9+
ProcessHandle ph =
ProcessHandle.current();
long pid = ph.pid();
ph.info().command()
.ifPresent(IO::println);
ph.children().forEach(
c -> IO.println(c.pid()));
¿Ves un problema con este código? Cuéntanos.
Por qué gana la forma moderna
Información completa
Accede al PID, comando, argumentos, hora de inicio, uso de CPU.
Árbol de procesos
Navega entre padre, hijos y descendientes.
Monitoreo
onExit() devuelve un CompletableFuture para monitoreo asíncrono.
Enfoque Antiguo
Runtime.exec()
Enfoque Moderno
ProcessHandle
Desde JDK
9
Dificultad
Intermedio
Soporte JDK
API moderna de procesos
Disponible
Ampliamente disponible desde JDK 9 (sept. 2017)
Cómo funciona
ProcessHandle proporciona PIDs, información del proceso (comando, argumentos, hora de inicio, uso de CPU), relaciones padre-hijo y destrucción de procesos. Se acabó depender de las partes internas no documentadas de Process.
Documentación Relacionada