gcc (GCC) 4.7.2
c89
E 'possibile verificare se un file è già stato chiuso?Controllare se un file che è stato aperto con fopen è stato chiuso
Ho aperto un file utilizzando fopen()
e chiuso utilizzando fclose(fd)
.
Questo file viene aperto e chiuso durante l'esecuzione del programma. Tuttavia, l'utente può terminare il programma facendo un ctrl-c
.
Quando vado alla mia routine di pulizia, non so se il file è in uno stato aperto o chiuso. Quindi, se provo a fare uno fclose(fd)
due volte, impilerà il dump.
Alcune idee sono stato gettando intorno:
- Aggiungi uno stato per il file da sia aperto o chiuso, e quindi verificare che lo stato, significa più lavoro per un lavoro così semplice.
- Non eseguire alcuna operazione in quanto il sistema operativo verrà automaticamente ripulito al termine del programma.
- C'è la funzione di accesso, ma che controllerà solo la modalità.
Molte grazie in anticipo,
L'aggiunta di uno stato (la prima opzione) aggiungerebbe una condizione di competizione a meno che non si maschera il segnale Ctrl + C mentre lo stato è sincronizzato con il file. – Inspired
perché non è possibile impostare 'fd' _ (nome strano, btw) _ su' NULL' dopo la chiusura? – VoidPointer
È più correlato alla libc (spesso Glibc, ma potrebbe essere [musl-libc] (http://musl-libc.org/) ecc.) Rispetto al compilatore. –