Domanda

Utilizzo fdopen per associare uno stream a un file aperto.

Quando io close() file, anche il flusso viene automaticamente dissociato e tutta la memoria del flusso viene restituita al sistema operativo oppure devo essere consapevole del file fdopen'd e chiuderlo in un modo specifico?

-Adamo

È stato utile?

Soluzione

close() è una chiamata di sistema.Chiuderà il descrittore di file nel kernel, ma non libererà il puntatore FILE e le risorse in libc.Dovresti invece usare fclose() sul puntatore FILE, che si occuperà anche di chiudere il descrittore di file.

Altri suggerimenti

Il kernel gestisce tali risorse e non hai alcun controllo su di esse se non la chiusura della chiamata che può liberare la memoria quando lo desidera (entro la fine del processo).

/Allan

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top