Ho un FILE *
, restituito da una chiamata a fopen()
. Ho bisogno di ottenere un descrittore di file da esso, per effettuare chiamate come fsync(fd)
su di esso. Qual è la funzione per ottenere un descrittore di file da un puntatore a file?
Ho un FILE *
, restituito da una chiamata a fopen()
. Ho bisogno di ottenere un descrittore di file da esso, per effettuare chiamate come fsync(fd)
su di esso. Qual è la funzione per ottenere un descrittore di file da un puntatore a file?
Risposte:
La funzione corretta è int fileno(FILE *stream)
. Può essere trovato in <stdio.h>
, ed è uno standard POSIX ma non standard C.
#include
nulla. Volevo solo dire che è sempre facile trovare il nome dell'intestazione corretta per una funzione standard . Vale a dire non è molto importante menzionare il nome esatto dell'intestazione nella risposta.
Anche se fileno(FILE *)
può restituire un descrittore di file, fai MOLTO attenzione a non bypassare il buffer di stdio. Se sono presenti dati buffer (in lettura o in scrittura senza scrittura), le letture / scritture dal descrittore di file potrebbero fornire risultati imprevisti.
Per rispondere a una delle domande secondarie, per convertire un descrittore di file in un puntatore FILE, utilizzare fdopen(3)