Auch wenn fileno(FILE *)
einen Dateideskriptor zurückgeben kann, seien Sie SEHR vorsichtig, den Puffer von stdio nicht zu umgehen. Wenn Pufferdaten vorhanden sind (entweder Lese- oder nicht geleerte Schreibvorgänge), können Lese-/Schreibvorgänge aus dem Dateideskriptor zu unerwarteten Ergebnissen führen.
Um eine der Nebenfragen zu beantworten, um einen Dateideskriptor in einen Dateizeiger umzuwandeln, verwenden Sie fdopen(3)
Die richtige Funktion ist int fileno(FILE *stream)
. Es kann in <stdio.h>
gefunden werden , und ist ein POSIX-Standard, aber kein Standard-C.