Java 9 - Améliorations de l'API de processus
Dans Java 9 Process API, qui est responsable du contrôle et de la gestion des processus du système d'exploitation, a été considérablement amélioré. La classe ProcessHandle fournit désormais l'ID de processus natif du processus, l'heure de début, le temps CPU accumulé, les arguments, la commande, l'utilisateur, le processus parent et les descendants. La classe ProcessHandle fournit également une méthode pour vérifier la vivacité des processus et pour détruire les processus. Il a la méthode onExit, la classe CompletableFuture peut effectuer une action de manière asynchrone lorsque le processus se termine.
Testeur.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)); } }
Sortie
Vous verrez la sortie suivante.
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