mit Konsolen-Child-Process über stdin/stdout kommunizieren?



  • Hallo,

    von meiner Hauptanwendung will ich einen neuen Prozess starten, welcher eine Konsolenanwendung darstellt, die von stdin liest und auf stdout schreibt.
    Wie kann ich nun von meiner Hauptanwendung aus eine Eingabe in den stdin der Konsolenanwendung "einfüttern"?
    Ebenso möchte ich gerne die erzeugte Ausgabe wieder vom stdout der Konsolenanwendung in mein Programm einlesen.
    Suche also sowas von der Funktion her wie eine "pipe" unter Unix.
    Wer kann mir ein paar Stichworte (Win32-API-Funktionen etc.) nennen oder Ideen dazu geben?
    (ruhig verschiedene Möglichkeiten aufzeigen, wenn's mehr gibt)
    Danke.



  • Das heißt unter Windows nicht anders 😉 - http://msdn.microsoft.com/library/en-us/ipc/base/pipes.asp



  • Bei CreateProcess kannst du deine eigenen Handles für stdin, stdout und stderr angeben. Das können z.B. Dateien oder Pipes sein.

    Aber aufpassen: Die Handles müssen "bInheritHandle=true" in den SECURITY_ATTRIBUTES gesetzt haben. Wenn ich mich recht entsinne, muß InheritHandle auch für Prozeß und Thread gesetzt sein, sonst geht es nicht (verstehe aber nicht warum...)



  • danke. 👍


Anmelden zum Antworten