Vérifier si un fichier a été ouvert avec fopen a été fermé

gcc (GCC) 4.7.2
c89

Est-il possible de vérifier si un fichier a déjà fermé?

J'ai ouvert un fichier à l'aide de fopen() et fermé à l'aide de fclose(fd).

Ce fichier est ouvert et fermé lors de l'exécution du programme. Toutefois, l'utilisateur peut mettre fin au programme en faisant un ctrl-c.

Quand je vais à ma routine de nettoyage, je ne sais pas si le fichier est dans un état ouvert ou fermé. Donc, si je fais un fclose(fd) deux fois, il va vidage de pile.

Quelques idées que j'ai été jeter autour de:

  1. Ajouter un état vers le fichier doit être ouvert ou fermé, puis vérifiez que l'état, signifie plus de travail pour un travail simple.
  2. Ne rien faire comme les OS de nettoyage automatially lorsque le programme se termine.
  3. Est il est de la fonction d'accès, mais qui se vérifie juste la mode.

Merci beaucoup à l'avance,

L'ajout d'un état (la première option) permettrait d'ajouter une condition de course, sauf si vous masque Ctrl+C signal alors que l'état est synchronisé avec le fichier.
pourquoi ne pouvez-vous pas ensemble fd (nom étrange, d'ailleurs) pour NULL après la fermeture ?
Il est plus liée à la libc (souvent Glibc, mais il pourrait être la musl-libc etc...) que pour le compilateur.
Avoir un état var #defined comme OPEN et CLOSE. Chaque fois que vous appelez fopen dans votre code, définir l'état comme Current_State = OPEN; et lorsque vous appelez fclose dans votre code, définir l'état comme Current_State = CLOSE; et de l'utilisation que current_state variable comme et quand nécessaire.

OriginalL'auteur ant2009 | 2013-07-30