Ich habe es schwer gehabt, die Ausgabe eines "Unterprozesses" zu erhalten (einer intern von einem Blackbox-Prozess gestartet, den ich über C# System überwache). Diagnostics.Process)C#: Redirect Standardausgabe eines Prozesses, der bereits ausgeführt wird
Ich nahm den Rat von der Antwort meiner früheren Post gegeben: here. Und dort findest du die Details von dem, was ich durchgemacht habe.
An dieser Stelle, obwohl ich in der Lage bin, den ssh-Prozess zu finden, der von process1.exe hervorgebracht wurde, die ich überwache. Ich kann die Ausgabe nicht in mein C# -Programm umleiten, weil es ein "bereits laufender Prozess" ist und nicht direkt von C# gestartet wurde.
Es scheint, dass alle Eigenschaften, die Sie für ein System.Diagnostics.Process-Objekt festlegen, nur wirksam werden, wenn Sie diesen Prozess explizit von Ihrer C# -Anwendung aus starten. Wenn ein anderer "nicht verwalteter Prozess" den Prozess gestartet hat, hat das Festlegen dieser Umleitung keine Auswirkungen, da der Prozess bereits von etwas gestartet wurde, das die erforderliche Umleitung nicht angibt.
Gibt es eine Möglichkeit, die Ausgabe eines Prozesses umzuleiten, der bereits gestartet wurde (ein Prozess, der von einem Programm gestartet wurde, für das ich keinen Spielraum habe, die Umleitung vor dem Start dieses Prozesses vorzugeben)?
Wie ist das möglich? Ich leite bereits alle Ausgaben von process1.exe zu meiner C# -Anwendung um. An dem Punkt, dass Prozess1 ssh.exe (process2) intern startet, erhalte ich 3 Zeilen mehr Ausgabe von process1, und dann hört die Ausgabe auf, weil process2 die einzige Ausgabe ist (ich vermute), und ich kann process2's nicht umleiten Ausgabe, weil es intern von process1 gestartet wird (für die ich Umleitung nicht steuern kann). –