[Java] Umgang mit der Situation, in der das Programm, das in den Output Stream of Process schreibt, nicht endet, selbst wenn waitFor

Dies ist ein Problem, das beim Ausführen des Inhalts des obigen Artikels aufgetreten ist.

Problem

Als ich an "OutputStream (= stdin)" von "Process" schrieb, endete es nicht, selbst wenn ich mit einem Zeitlimit "waitFor" war.

Problematischer Code


//Ausnahme versuchen-Vorausgesetzt, der Fang erfolgt draußen
Process process = new ProcessBuilder(commands).start();

//Schreiben Sie an stdin
OutputStream os = process.getOutputStream();
os.write(multipartFile.getBytes());

boolean result = process.waitFor(5, TimeUnit.SECONDS);

Aktion / Ursache

Ich habe versucht, "OutputStream" zu schließen, und es wurde gelöst. Ich denke, das lag wahrscheinlich daran, dass ich endlos auf das Schreiben warten musste.

Nach dem Umgang


//Ausnahme versuchen-Vorausgesetzt, der Fang erfolgt draußen
Process process = new ProcessBuilder(commands).start();

//Schreiben Sie an stdin
try (OutputStream os = process.getOutputStream()) {
  os.write(multipartFile.getBytes());
}

boolean result = process.waitFor(5, TimeUnit.SECONDS);

Recommended Posts

[Java] Umgang mit der Situation, in der das Programm, das in den Output Stream of Process schreibt, nicht endet, selbst wenn waitFor
Eine Geschichte, die ich mit der Stream-API von Java8 einem Prozess schreiben wollte, der einer while-Anweisung entspricht
Eine Geschichte, die unter einem Raum litt, der nicht verschwindet, selbst wenn er mit Java beschnitten ist
Bei Verwendung von JPA (Hibernate) wird die Java-Anwendung auch dann nicht beendet, wenn sie die letzte Zeile der Hauptmethode erreicht.
[Java] Ändern Sie die Verarbeitung entsprechend der Situation mit dem Strategiemuster
[Firebase] Firebase Auth currentUser wird auch nach der Deinstallation der App nicht null
So interagieren Sie mit einem Server, der die App nicht zum Absturz bringt
Ausgabe des Buches "Einführung in Java"
Ich habe ein Programm erstellt, das aus dem mit Java überladenen Prozess nach der Zielklasse sucht
Einstellungsmethode, die die Größe nicht ändert, auch wenn das CSS geändert wird
Das in JAVA_HOME festgelegte JDK-Problem tritt auch dann nicht auf, wenn die Java-Version an der Eingabeaufforderung ausgeführt wird
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben (graue Magie, die weniger schwarze Magie ist)
MockMVC gibt 200 zurück, auch wenn ich eine Anfrage an einen Pfad stelle, der nicht existiert
Was tun, wenn die Annotation JSON Hint nicht mit Lombok und JSONIC funktioniert?
[Java] Das Problem, dass hochgeladene Bilder aufgrund des Einflusses des Caches nicht aktualisiert werden
Java: Verwenden Sie Stream, um den Inhalt einer Sammlung zu sortieren
Ein Programm (Java), das die Summe von ungeraden und geraden Zahlen in einem Array ausgibt
Was tun, wenn Sie Ruby mit rbenv installiert haben, die Version sich jedoch nicht ändert?
Notiz, die zum Anmeldebildschirm übergeht, wenn Sie nicht mit devise angemeldet sind
So reduzieren Sie die Programmlast ein wenig, wenn Sie Zeichen mit JAVA kombinieren