2009-05-03 10 views
0

J'ai un démon qui surveille un certain fichier pour y apporter des modifications, puis traite les modifications apportées au fichier. Mais maintenant, j'ai remarqué que lorsque je tente de lire le fichier (en utilisant des fgets), je ne reçois aucune donnée. Cela ne se produit qu'après une modification du fichier, mais si je tente de lire le fichier à un autre moment, je peux le lire correctement.Fichier ou répertoire verrouillé dans C

Je pense qu'un autre processus a le fichier verrouillé lorsque j'essaie de le lire. Comment puis-je déterminer si le fichier est verrouillé?

Répondre

5

Lorsque fgets() renvoie NULL pour un EOF, il définit une condition que vous devez effacer avec clearerr() malgré la présence de données supplémentaires. (Le seul type commun de verrouillage de fichier sur Linux est consultatif, donc ce n'est probablement pas votre problème.inotify est probablement une meilleure solution pour détecter les changements de fichiers.) http://en.wikipedia.org/wiki/Inotify

+0

Il est peu probable que ce soit le verrouillage de fichier, comme vous le dites. –

0

Essayez de vérifier l'erreur avec ferror(), et oui - - comme Dave l'a souligné, vous devriez appeler clearerr() avant que fgets ne le vérifie

Questions connexes