Ich habe ein FILE*
in C auf Mac OS X kopieren (int
Filedeskriptoren POSIX mit dem ganzen Weg ist leider nicht in Frage), so kam ich auf die folgende Funktion auf:Kann ich den Zugriffsmodus einer `FILE *` bekommen?
static FILE* fdup(FILE* fp, const char* mode)
{
int fd = fileno(fp);
int duplicated = dup(fd);
return fdopen(duplicated, mode);
}
Es funktioniert sehr gut , außer dass es diesen kleinen hässlichen Teil hat, wo ich nochmal nach dem Datei-Modus frage, denn fdopen
kann das scheinbar selbst nicht feststellen.
Dieses Problem ist nicht kritisch, im Grunde da, ich verwende es nur für stdin
, stdout
und stderr
(und natürlich kenne ich die Zugriffsarten dieser drei). Allerdings wäre es würde eleganter sein, wenn ich es nicht selbst wissen musste; und das ist wahrscheinlich möglich, da der dup
Aufruf es nicht benötigt.
Wie kann ich den Zugriffsmodus eines FILE*
Streams ermitteln?