Concurrency Intermediário

Inspecione e gerencie processos do sistema operacional com ProcessHandle.

✕ 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()));
Viu um problema com este código? Nos avise.
🔍

Informações completas

Acesse PID, comando, argumentos, hora de início e uso de CPU.

🌳

Árvore de processos

Navegue por pai, filhos e descendentes.

📊

Monitoramento

onExit() retorna um CompletableFuture para monitoramento assíncrono.

Abordagem Antiga
Runtime.exec()
Abordagem Moderna
ProcessHandle
Desde o JDK
9
Dificuldade
Intermediário
API moderna de processos
Disponível

Amplamente disponível desde o JDK 9 (setembro de 2017)

ProcessHandle fornece PIDs, informações do processo (comando, argumentos, hora de início, uso de CPU), relacionamentos pai/filho e destruição de processos. Chega de usar internos não documentados de Process.

Compartilhar 𝕏 🦋 in