In Java 9 unterstützt die Prozess-API eine einfache Möglichkeit, umfangreiche Informationen über einen Prozess zu erhalten. Die ProcessHandleSchnittstelle kann native Prozesse und Methoden identifizieren und steuern, um Prozessaktivitäten zu überprüfen und Prozesse zu zerstören, während die ProcessHandle.InfoSchnittstelle eine Informationsmomentaufnahme eines Prozesses bereitstellen kann. Wir müssen die Methode destroy() der Schnittstelle ProcessHandle verwenden, um den Prozess zu zerstören.
Im folgenden Beispiel müssen wir die Schnittstelle „ProcessHandle“ verwenden, um den Prozess zu beenden. Beispiel
import java.io.File; import java.io.IOException; import java.util.Objects; public class DestroyProcessTest { public static void main(String[] args) throws InterruptedException { System.out.println("---------------------------"); System.out.println("Destroy Process:"); final String javaCmd = getJavaCmdFromParent(); final String classpath = getClassPathFromParent(); try { final <strong>Process </strong>process = new <strong>ProcessBuilder</strong>(javaCmd, "-cp", classpath, <strong>DestroyProcessTest.class.getName()</strong>).start(); ProcessHandle processHandle = process.<strong>toHandle()</strong>; printInfo(processHandle); destroyProcess(processHandle); Thread.sleep(1000); System.out.println("---------------------------"); System.out.println("After destroying the process:"); printInfo(processHandle); } catch(IOException e) { e.printStackTrace(); } } private static String getClassPathFromParent() { return System.getProperty("java.class.path", "./*"); } private static String getJavaCmdFromParent() { return Objects.isNull(System.getProperty("java.home")) ? "java" : String.format("%s%sbin%sjava", System.getProperty("java.home"), File.separator, File.separator); } private static void destroyProcess(ProcessHandle processHandle) throws IllegalStateException { System.out.println("Ready to destroy Process with id: " + processHandle.pid()); processHandle.<strong>destroy()</strong>; } private static void printInfo(ProcessHandle processHandle) { System.out.println("---------"); System.out.println("Id: " +<strong> </strong>processHandle<strong>.pid()</strong>); System.out.println("isAlive(): " +<strong> </strong>processHandle<strong>.isAlive()</strong>); System.out.println("isSupportsNormalTermination(): " + processHandle.<strong>supportsNormalTermination()</strong>); <strong>ProcessHandle.Info</strong> processInfo = <strong>processHandle.info()</strong>; System.out.println("Info: " + processInfo<strong>.toString()</strong>); System.out.println("Info arguments().isPresent(): " + processInfo<strong>.</strong><strong>arguments()</strong><strong>.isPresent()</strong>); System.out.println("Info command().isPresent(): " + <strong>processInfo.command().isPresent()</strong>); System.out.println("Info totalCpuDuration().isPresent(): " + processInfo.<strong>totalCpuDuration().isPresent()</strong>); System.out.println("Info user().isPresent(): " + processInfo.<strong>user().isPresent()</strong>); } }
<strong>--------------------------- Destroy Process: --------- Id: 4384 isAlive(): true isSupportsNormalTermination(): false Info: [user: Optional[Tutorialspoint\User], cmd: C:\Program Files\Java\jdk-9.0.4\bin\java.exe, startTime: Optional[2020-03-06T10:58:53.210Z], totalTime: Optional[PT0.046875S]] Info arguments().isPresent(): false Info command().isPresent(): true Info totalCpuDuration().isPresent(): true Info user().isPresent(): true Ready to destroy Process with id: 4384 --------------------------- After destroying the process: --------- Id: 4384 isAlive(): false isSupportsNormalTermination(): false Info: [user: Optional[Tutorialspoint\User], startTime: Optional[2020-03-06T10:58:53.210Z], totalTime: Optional[PT0.109375S]] Info arguments().isPresent(): false Info command().isPresent(): false Info totalCpuDuration().isPresent(): true Info user().isPresent(): true</strong>
Das obige ist der detaillierte Inhalt vonWie kann ich einen Prozess mithilfe der Prozess-API in Java 9 beenden/zerstören?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!