I puntatori di file non sono l'unico modo per accedere ai file su sistemi POSIX (che, ovviamente, è Linux).
Di fatto, la struttura FILE
esiste per semplificare il lavoro con i file in modo multipiattaforma ( fopen()
funzionerà su Linux, Mac OS X, qualsiasi BSD e Windows) e per fornire alcuni servizi come il buffering trasparente (l'I / O bufferizzato è molto più veloce).
Tutto ciò di solito è buono, a meno che non sia controproducente (è necessario che il file sia sincronizzato per l'accesso comune da molti processi) o pericoloso (l'output bufferizzato potrebbe non essere svuotato quando necessario e potrebbe lasciare il file in cattivo stato se interrotto in modo improprio ). Ora, non sono un esperto e questi problemi potrebbero essere inesistenti, ma ci sono certamente dei motivi per usare l'API di livello inferiore fornita da POSIX: il meccanismo descrittore di file , open()
, read()
, write()
, close()
e mmap()
.
Queste funzioni sono gli elementi costitutivi dell'abstract FILE*
, almeno in Linux, (puoi testarlo eseguendo un programma I / O di file di esempio con strace
) e puoi usarli se vuoi l'accesso diretto in un file.
Questa è probabilmente la soluzione al problema che l'intervistatore si aspettava. La ragione per cui potrebbe volere che tu lo sappia è che sei stato intervistato per un lavoro nei sistemi embedded; la conoscenza del sistema sottostante è essenziale in tale posizione.
Una volta ho incontrato un guru di programmazione Linux, che mi ha detto che pensa che una persona possa affermare di conoscere C quando può implementare l'intera libreria standard da solo su almeno una piattaforma senza alcuna difficoltà significativa. In alcuni domini, la conoscenza di basso livello è un must.