Executable aufrufen und Ausgabe umleiten



  • Hallo,

    ich rufe in meinem c++ Programm unter Linux ein Executable mittels system("a.out") auf. Dieses schreibt währenddessen seine Ausgabe ins Terminalfenster. Ich möchte diese Ausgabe einerseits in eine Datei umleiten, aber immer noch ausgeben lassen.

    Die Umleitung ist mit system("a.out >output") nun einfach möglich, aber dann erscheint während des Laufs nichts mehr.
    Müßte ich nun vor dem Start der Exe einen Threat installieren, der ähnlich "tail -f ..." die Ausgabedatei ausgibt?

    Oder seht Ihr andere Lösungsmöglichkeiten.

    Danke und Gruß
    Oliver



  • ist a.out von dir geschrieben? d.h. besitzt du den source?

    Dann kannst du ja auf stdout sowie auf stderr ausgeben, dann z.B. stdout in die Datei umleiten, und stderr erscheint auf dem Bildschirm.



  • So funktionieren Streams nicht. Du müsstest schon ein Wrapper dazwischenschalten, der die Ausgabe dupliziert. Wäre ja nicht sonderlich schwer:

    #!/bin/sh
    
    while read line
    do
       echo "$line"
       echo "$line" >> $1
    done
    

    Oder so ungefähr und aufrufen einfach so: my_program | my_wrapper my_log_file.txt

    Und den Aufruf kannst du ja wieder in dein system()-Aufruf packen.




Anmelden zum Antworten