Ich spiele mit mkstemp()
, was einen Dateideskriptor bereitstellt, aber ich möchte eine formatierte Ausgabe über generieren fprintf()
. Gibt es eine einfache Möglichkeit, den von bereitgestellten Dateideskriptor mkstemp()
in eine FILE *
Struktur umzuwandeln, die für die Verwendung mit geeignet ist fprintf()
?
84
Antworten:
Verwendung
fdopen()
:quelle
fileno()
: linux.die.net/man/3/filenofd
wurde mit einigen Flags (wieO_NONBLOCK
) geöffnet - was passiert mit ihnen, nachdemfdopen
es mit neuen Flags geöffnet wurde? Werden siexor
zusammen oder ersetzt?fdopen
mehrmals anzurufen ? (vorausgesetzt, es passiert in einer Funktion, die immer wieder aufgerufen wird)FILE* f = fdopen(d, "w");
man fdopen Ausgabe:
quelle
Es gibt keine Standardmethode (oder umgekehrt), da der C-Standard nichts zu Dateideskriptoren zu sagen hat. Ihre spezifische Plattform kann einen solchen Mechanismus bereitstellen oder nicht.
quelle
mkstemp
impliziert, dass nicht standardisierte Lösungen in diesem speziellen Fall akzeptabel sind. In diesem Fall hätte er jedoch dasposix
Tag hinzufügen sollen (das, wie ich sehe, inzwischen hinzugefügt wurde).