Umleiten von FILE* (Datei => stdout) bzw fopen ersetzen

20/06/2015 - 08:20 von Robert Hartmann | Report spam
Hallo zusammen,

In meinem C-Programm nutze ich eine Bibliotheksfunktion,
die ihr Berechnungsergebnis in eine Datei schreibt.

Leider hat die Bibliothek es nicht vorgesehen, dass
man als Nutzer den Ort an den die Bib ihr Ergebnis heraus schreibt
wirklich beeinflussen kann.

Zwar kann man den Namen der Datei in bestimmten Grenzen beeinflussen;
aber ich möchte überhaupt keine Datei, sondern ich möchte, dass das
Ergebnis nach stdout geschrieben werden soll.


Ich möchte also, dass der Aufruf in meinem Programm von

bibliotheks_fnk(inputdata);

statt eine neue Datei anzulegen tatsàchlich auf stdout schreibt.


Da der durch die Bibliothek erzeugte Dateiname fest dokumentiert ist,
ist mir die Frage gekommen, ob man die C-Runtime-Umgebung irgendwie
veranlassen kann, einen FILE* auf stdout zurückzugeben,
wenn fopen als Parameter den Dateinamen erhàlt.

Gruß Robert
 

Lesen sie die antworten

#1 Stefan Reuther
20/06/2015 - 10:34 | Warnen spam
Robert Hartmann wrote:
Ich möchte also, dass der Aufruf in meinem Programm von

bibliotheks_fnk(inputdata);

statt eine neue Datei anzulegen tatsàchlich auf stdout schreibt.

Da der durch die Bibliothek erzeugte Dateiname fest dokumentiert ist,
ist mir die Frage gekommen, ob man die C-Runtime-Umgebung irgendwie
veranlassen kann, einen FILE* auf stdout zurückzugeben,
wenn fopen als Parameter den Dateinamen erhàlt.



In der C-Runtime gibt es da nichts (außer Ferkeleien mit "wir schreiben
eine Funktion 'open', die den Syscall ersetzt").

Die meisten Betriebssysteme haben aber Devicenamen, mit denen man etwas
àhnliches erreichen kann. Unter Linux wàre das '/dev/stdout'. Unter
Windows finde ich jetzt auf die Schnelle nichts 100% àquivalentes, aber
da gibt's immerhin 'con' als Geràtenamen für die Konsole.


Stefan

Ähnliche fragen