Comment puis-je dire si un fichier est ouvert en C? Je pense que la question plus technique serait la suivante: comment puis-je récupérer le nombre de références à un fichier existant et déterminer avec cette information s'il est sûr d'ouvrir. P>
L'idée que je suis implémentée est une file d'attente de fichiers. Vous videz certains fichiers, mon code traite les fichiers. Je ne veux pas commencer à traiter tant que le producteur ferme le descripteur de fichier. P>
Tout est fait sous Linux. P>
merci, Chenz P>
7 Réponses :
Je ne pense pas qu'il y ait un moyen de le faire dans Pure C (ce ne serait pas une plate-forme croisée). P>
Si vous savez quels fichiers que vous utilisez à l'avance, vous pouvez utiliser inotify à être notifié quand ils s'ouvrent. p>
Oui, il peut également utiliser Inotify pour détecter qu'un fichier a été fermé.
creuser cette information est beaucoup de travail (vous devrez rechercher Thorugh / Proc / * / FD Vous seriez mieux à partir de: P>
Je suis arrivé à la conclusion que la deuxième suggestion est la meilleure pour ma situation. Merci!
c a des installations pour manipuler des fichiers, mais pas beaucoup pour obtenir des informations sur eux. Dans Portable C, sur la seule chose que vous puissiez faire est d'essayer d'ouvrir le fichier de la manière souhaitée et de voir si cela fonctionne. P>
Si vous pouvez contrôler les processus qui ouvrent le fichier et que vous essayez d'éviter les collisions en verrouillant le fichier (il existe de nombreuses bibliothèques sous Linux pour le faire) P>
Utilisez la commande LSOF. (Liste des fichiers ouverts). P>
Si vous contrôlez à la fois le producteur et le consommateur, vous pouvez utiliser Lockf () de FLOCK () pour verrouiller le fichier. P>
Il existe une commande LSOF sur la plupart des distributions, qui affiche tous les fichiers actuellement ouverts, vous pouvez bien sûr Grep sa sortie si vos fichiers sont dans le même répertoire ou que vous avez un modèle de nom reconnaissable. P>