J'ai un FILE *
, Renvoyé par un appel à fopen()
. Je dois obtenir un descripteur de fichier, pour faire des appels comme fsync(fd)
dessus. Quelle est la fonction pour obtenir un descripteur de fichier à partir d'un pointeur de fichier?
La fonction appropriée est int fileno(FILE *stream)
. On peut le trouver dans <stdio.h>
, et est un standard POSIX mais pas le standard C.
Même si fileno(FILE *)
peut renvoyer un descripteur de fichier, veillez à ne pas contourner le tampon de stdio. Si le tampon contient des données (en lecture ou en écriture), les lectures/écritures à partir du descripteur de fichier peuvent donner des résultats inattendus.
Pour répondre à l'une des questions annexes, pour convertir un descripteur de fichier en un pointeur FILE, utilisez fdopen(3)