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?
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?
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.
#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)