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 aufstderr
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.
-