API moderne des processus
Inspectez et gérez les processus du système d'exploitation avec ProcessHandle.
Comparaison de Code
✕ 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.
Pourquoi la méthode moderne gagne
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
Support JDK
API moderne des processus
Disponible
Disponible depuis JDK 9 (sept. 2017)
Comment ça fonctionne
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.
Documentation Associée