Heim  >  Artikel  >  Java  >  So verwenden Sie die Process-Klasse in Java 9, um die Ausführung externer Prozesse zu steuern

So verwenden Sie die Process-Klasse in Java 9, um die Ausführung externer Prozesse zu steuern

WBOY
WBOYOriginal
2023-07-29 23:21:301304Durchsuche

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.

  1. Erstellen Sie einen externen Prozess
    In Java 9 ist das Erstellen eines externen Prozesses sehr einfach. Zuerst müssen wir mithilfe der ProcessBuilder-Klasse ein ProcessBuilder-Objekt erstellen und den Befehl des zu startenden externen Prozesses angeben. Anschließend können wir den externen Prozess mit der Methode start() starten. Das Folgende ist ein Beispielcode zum Erstellen eines externen Prozesses:
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.

  1. Steuerung der Ausführung externer Prozesse
    Sobald wir einen externen Prozess gestartet haben, können wir die Process-Klasse verwenden, um seine Ausführung zu steuern. Die Process-Klasse stellt einige Methoden bereit, die uns helfen, den Status externer Prozesse zu überwachen, Eingabe-/Ausgabeströme abzurufen und mit Prozessen zu interagieren.

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.

  1. Zerstörung und Unterbrechung externer Prozesse
    Manchmal müssen wir externe Prozesse manuell zerstören. Wir können die Methode destroy() verwenden, um den Prozess zu zerstören. Der Beispielcode lautet wie folgt:
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();
  1. Sicherheit und Einschränkungen für externe Prozesse
    In Java 9 ist es möglich, die Ausführung externer Prozesse mithilfe neuer Methoden der ProcessBuilder-Klasse einzurichten und einzuschränken. Verwenden Sie die Methode command(String...), um den auszuführenden externen Prozessbefehl genauer anzugeben. Darüber hinaus kann der Fehlerausgabestream mithilfe der Methode „redirectError(ProcessBuilder.Redirect)“ umgeleitet werden.
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:

  1. Java 9 Process API Javadoc: https://docs.oracle.com/javase/9/docs/api/java/lang/Process.html
  2. Java 9 ProcessBuilder API Javadoc: https:// / /docs.oracle.com/javase/9/docs/api/java/lang/ProcessBuilder.html

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn