J'ai un FILE *
, renvoyé par un appel à fopen()
. J'ai besoin d'en obtenir un descripteur de fichier, pour faire des appels comme fsync(fd)
celui-ci. Quelle est la fonction pour obtenir un descripteur de fichier à partir d'un pointeur de fichier?
174
Réponses:
La bonne fonction est
int fileno(FILE *stream)
. Il peut être trouvé dans<stdio.h>
, et est un standard POSIX mais pas le standard C.la source
#include
rien. Je voulais simplement dire qu'il est toujours facile de trouver le nom de l'en-tête approprié pour une fonction standard . C'est-à-dire qu'il n'est pas vraiment essentiel de mentionner le nom exact de l'en-tête dans la réponse.Même s'il
fileno(FILE *)
peut renvoyer un descripteur de fichier, veillez TRÈS à ne pas contourner le tampon de stdio. S'il existe des données de tampon (en lecture ou en écriture non vidangée), les lectures / écritures à partir du descripteur de fichier peuvent vous donner des résultats inattendus.Pour répondre à l'une des questions secondaires, pour convertir un descripteur de fichier en pointeur FILE, utilisez
fdopen(3)
la source