So verwenden Sie die Process-Klasse, um die Ausführung externer Prozesse in Java 9 zu steuern.
Übersicht:
In Java können wir mithilfe der Process-Klasse problemlos mit externen Prozessen interagieren. Java 9 führt mehrere neue Funktionen ein, darunter einen sichereren und flexibleren Ansatz im Umgang mit externen Prozessen. In diesem Artikel wird die Verwendung der Process-Klasse in Java 9 erläutert und ihre Verwendung anhand von Codebeispielen demonstriert.
import java.io.IOException; public class ExternalProcessExample { public static void main(String[] args) { ProcessBuilder processBuilder = new ProcessBuilder("notepad.exe"); try { Process process = processBuilder.start(); } catch (IOException e) { e.printStackTrace(); } } }
Im obigen Beispiel haben wir ein ProcessBuilder-Objekt erstellt und den Befehl des zu startenden externen Prozesses als „notepad.exe“ angegeben. Dann verwenden wir die Methode start(), um den externen Prozess zu starten.
2.1 Abhören des Prozess-Exit-Status
Wir können die Methode waitFor() verwenden, um auf den Exit-Status eines externen Prozesses zu warten und seinen Exit-Status zu erhalten. Der Beispielcode lautet wie folgt:
try { int exitValue = process.waitFor(); System.out.println("Process exited with value: " + exitValue); } catch (InterruptedException e) { e.printStackTrace(); }
Im obigen Beispiel verwenden wir die Methode waitFor(), um auf den Exit des externen Prozesses zu warten und den Exit-Status in der Variablen „exitValue“ zu speichern.
2.2 Den Eingabe-/Ausgabestrom eines externen Prozesses abrufen
Manchmal müssen wir den Eingabe-/Ausgabestrom eines externen Prozesses abrufen, um mit dem Prozess interagieren zu können. Die Process-Klasse stellt die Methoden getInputStream(), getOutputStream() und getErrorStream() bereit, um den entsprechenden Stream abzurufen.
try { // 获取进程输入流并发送数据 OutputStream outputStream = process.getOutputStream(); outputStream.write("Hello".getBytes()); // 获取进程输出流并读取数据 InputStream inputStream = process.getInputStream(); byte[] buffer = new byte[1024]; int length = inputStream.read(buffer); String output = new String(buffer, 0, length); System.out.println("Process output: " + output); // 获取进程错误流并读取错误信息 InputStream errorStream = process.getErrorStream(); byte[] errorBuffer = new byte[1024]; int errorLength = errorStream.read(errorBuffer); String errorMessage = new String(errorBuffer, 0, errorLength); System.out.println("Process error: " + errorMessage); } catch (IOException e) { e.printStackTrace(); }
Im obigen Beispiel verwenden wir die Methode getInputStream(), um den Eingabestrom des Prozesses abzurufen, und die Methode getOutputStream(), um den Ausgabestrom des Prozesses abzurufen, und die Methode getErrorStream(), um den Fehlerstrom abzurufen der Prozess. Wir können diese Streams dann verwenden, um Daten an den Prozess zu senden, die Ausgabe des Prozesses zu lesen und die Fehlerinformationen des Prozesses zu lesen.
process.destroy();
Darüber hinaus können wir auch die Methode destroyForcably() verwenden, um die Zerstörung des Prozesses zu erzwingen, selbst wenn der Prozess nicht reagiert. Der Beispielcode lautet wie folgt:
process.destroyForcibly();
Manchmal müssen wir aus irgendeinem Grund den Vorgang unterbrechen und auf das Beenden des externen Prozesses warten. Wir können die Methode interrupt() verwenden, um Vorgänge zu unterbrechen. Der Beispielcode lautet wie folgt:
Thread currentThread = Thread.currentThread(); currentThread.interrupt();
ProcessBuilder processBuilder = new ProcessBuilder() .command("ping", "www.google.com") .redirectError(ProcessBuilder.Redirect.INHERIT);
Im obigen Beispiel verwenden wir die Methode command(String...), um den externen Prozessbefehl als „ping www.google.com“ anzugeben. Wir verwenden auch die Methode „redirectError(ProcessBuilder.Redirect)“, um den Fehlerausgabestream auf den Standardausgabestream umzuleiten.
Zusammenfassung:
In Java 9 ist die Verwendung der Process-Klasse zur Steuerung der Ausführung externer Prozesse sicherer und flexibler geworden. Wir können die ProcessBuilder-Klasse verwenden, um externe Prozesse zu erstellen und zu starten, und die Process-Klasse verwenden, um den Prozessstatus zu überwachen, Eingabe-/Ausgabeströme abzurufen und mit dem Prozess zu interagieren. Darüber hinaus bietet Java 9 auch einige neue Methoden zum Festlegen und Begrenzen der Ausführung externer Prozesse.
Referenzen:
Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Process-Klasse in Java 9, um die Ausführung externer Prozesse zu steuern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!