Concurrency Intermédiaire

Inspectez et gérez les processus du système d'exploitation avec 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()));
Un problème avec ce code ? Dites-le nous.
🔍

Informations complètes

Accès au PID, commande, arguments, heure de démarrage, utilisation CPU.

🌳

Arbre de processus

Naviguez entre parent, enfants et descendants.

📊

Surveillance

onExit() retourne un CompletableFuture pour la surveillance asynchrone.

Ancienne Approche
Runtime.exec()
Approche Moderne
ProcessHandle
Depuis JDK
9
Difficulté
Intermédiaire
API moderne des processus
Disponible

Disponible depuis JDK 9 (sept. 2017)

ProcessHandle fournit les PIDs, les informations de processus (commande, arguments, heure de démarrage, utilisation CPU), les relations parent-enfant et la destruction de processus. Fini de dépendre des parties internes non documentées de Process.

Partager 𝕏 🦋 in