Warum kehrt Process.waitFor () niemals zurück?

Ich starte einen Windows-Prozess (geschrieben in C ++, aber ich habe keine Quellen) aus Java-Code auf folgende Weise:

 Process p1 = Runtime.getRuntime().exec(cmdAndParams);
 p1.waitFor();

Mein Problem ist, dass die waitFor () -Methode niemals endet. Daher habe ich versucht, den Prozess in einer einfachen Shell zu starten, und er endet korrekt mit vielen Ausdrucken in der Shell (Standardausgabe, denke ich).

Daher habe ich beschlossen, einen Thread zu erstellen und zu starten, der die Standardausgabe liest, auch wenn ich diese Ausgaben momentan nicht benötige. Dies hat das Problem behoben.

So ist meine Frage die folgende: Ist diese Lösung der "Java-Standard zum Starten und Warten auf externe Prozesse mit Ausgaben" oder bedeutet dies, dass irgendwo im nativen Prozess ein Problem vorliegt? Wenn ein solches Problem besteht, welcher C ++ - Programmierfehler kann die Ursache des Problems sein?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage