2010-08-31 15 views

risposta

13

Uno fa parte della libreria c standard (fopen), quindi è possibile aspettarsi che sia presente in tutte le configurazioni del compilatore c ospitato. Questa funzione restituisce un FILE* che può essere operato dalle funzioni in <stdio.h>.

L'altro (open) è una chiamata/funzione di sistema non specificata dallo standard c (tuttavia, credo sia parte dello standard POSIX) e pertanto garantita solo su piattaforme selezionate che sostengono di supportarlo. Ciò restituisce un int che rappresenta un file, questo può essere operato utilizzando read/write e altre funzioni simili.

+1

Vedi http://www.cplusplus.com/reference/clibrary/cstdio/fopen/ e http://rabbit.eng.miami.edu/info/functions/unixio.html per ulteriori approfondimenti! – stanigator

4

open() è una chiamata di sistema standardizzata fornita da un sistema operativo conforme a POSIX (la maggior parte dei sistemi operativi POSIX ha anche la chiamata di sistema open()). fopen() è una funzione di libreria C fornita dall'implementazione C e/o dalla libreria di runtime.

fopen() consente l'input/output bufferizzato e/o formattato, mentre open() viene generalmente utilizzato per un IO più diretto. È possibile implementare la funzione fopen() utilizzando la chiamata di sistema open().

1

Come altri hanno detto open() è una chiamata di sistema attraverso standard POSIX, principalmente sostenuta dalla famiglia di sistemi operativi UNIX. Restituisce "int" che indica che il descrittore di file è stato aperto.

Mentre d'altra parte fopen() è fornito dalla libreria C e restituisce un file * che punta al file che si apre.

Problemi correlati