C for newbies: stdout umleiten und kopieren

Ich würde gerne die Ausgabe eines

ret = system("myprog")

calls auf eine Datei umleiten. Das ist ja mit

my\_stream = freopen("my\_file","a+", stdout)

noch relativ einfach. Außerdem hätte ich aber noch gerne eine „Kopie“ der Daten, die auf stdout daherkommen auf dem Bildschirm.

Außerdem hab´ ich noch nicht rausgefunden, wie ich die stdout dann wieder auf den vorherigen Wert zurücksetze (muß ja nicht zwangsläufig der Bildschirm sein)

save\_stdout = stdout;
new\_stdout = freopen(...);
stdout = save\_stdout;

geht ja nicht, weil stdout kein l-value ist.

Kann mir da jemand weiterhelfen?

Ich würde gerne die Ausgabe eines

ret = system(„myprog“)

calls
auf eine Datei umleiten.

Das sollte Systemabhaengig (aber bei allen gaengigen) mit

 system("myprog \>\> datei.txt"

gehen. Die daten erscheinen dann nicht auf dem Bildschirm, sondern werden in datei.txt gespeichert und da kann man sie ja per fopen oder aehnlichem auslesen.

Ciao! Bjoern

danke, aber das löst mein Problem leider nicht
Danke vorerst mal, aber diese Idee hatte ich selbst auch schon, das Problem ist nur, daß der system(…) synchron läuft, und wenn ich da dann ein länger laufendes Programm aufrufe sehe ich am Bildschirm so lange nichts, wie das Programm braucht. Was ich also bräuchte, wäre, daß die Daten gleichzeitig auf den Bildschirm und in die Datei geschrieben werden. Unter Unix wäre das insofern kein Problem, als ich mit fork() einen Child-Prozeß erzeugen könnte, der mir dann auf den BS schreibt, aber unter DOS geht das halt nicht (oder???)

P.S.: Das „for newbies“ im Titel war glaube ich nicht mehr passend…

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo

Ich würde gerne die Ausgabe eines

ret = system(„myprog“)

calls
auf eine Datei umleiten. Das ist ja mit

my_stream = freopen(„my_file“,„a+“,
stdout)

noch relativ einfach.
Außerdem hätte ich aber noch gerne eine
„Kopie“ der Daten, die auf stdout
daherkommen auf dem Bildschirm.

Bist du unter DOS oder WINDOWS ???

MfG Peter(TOO)

Bist du unter DOS oder WINDOWS ???

Am liebsten würd´ ich mit der C-library auskommen (also Source-kompatibel für DOS, Windows, UNIX, …) sein. Falls das direkt nicht möglich ist, müßte man halt verschiedene Funktionsdefinitionen linken. Wenn Du mir eine Lösung für DOS verraten kannst, würde mir das aber schon weiterhelfen.

Danke!