web-dev-qa-db-fra.com

Comment obtenir un pointeur FILE à partir d'un descripteur de fichier?

Je joue avec mkstemp(), qui fournit un descripteur de fichier, mais je veux générer une sortie formatée via fprintf(). Existe-t-il un moyen simple de transformer le descripteur de fichier fourni par mkstemp() en une structure FILE * Adaptée à une utilisation avec fprintf()?

75
BD at Rivenhill

Utilisez fdopen() :

FILE* fp = fdopen(fd, "w");
92
Richard Pennington

FILE* f = fdopen(d, "w");

sortie man fdopen:

SYNOPSIS

#include <stdio.h>

FILE *
fdopen(int fildes, const char *mode);

La fonction fdopen() associe un flux au descripteur de fichier existant, fildes. Le mode du flux doit être compatible avec le mode du descripteur de fichier. Lorsque le flux est fermé via fclose(3), fildes est également fermé.

26
Gregory Pakosz