Retourner aux forums || Retourner au forum Programmation.c
Programmation.c : Comment savoir si un fichier est ouvert par un process ?
Posté par Christophe GRAND (page perso, ) le 15 juillet 2004Je n'ai même pas besoin de savoir qui a ce @#! de descripteur, je veux juste savoir si ce fichier est ouvert.
Ma problématique globale est la suivante : avec fam, je monitore les créations de fichiers dans un répertoire pour déclencher des traitements sur ces fichiers. Cependant avant de balancer ces traitements, j'aimerais être sûr que le fichier est complet.
Merci d'avance.
> Lire le message (5 commentaires, moyenne: 2,8).
.
essaye 'fuser le_fichier'
-
[^]Merci quand même
Posté par Christophe GRAND (page perso, ) le 15/07/2004 à 23:02. (lien). Évalué à 1.je suis allé regarder le source de fuser pour me persuader de l'horrib' vérité (que je refusais d'admettre), fuser ne repose par sur quelques appels systèmes mais sur le scan de /proc ... donc en dehors de /proc point de salut.
-
[^]Re: Merci quand même
Posté par gc (page perso, ) le 16/07/2004 à 07:09. (lien). Évalué à 2.faut voir que dans le kernel il doit probablement y avoir une table des processus et pour chaque processus probablement une table des fichiers ouverts ; ils ne vont probablement pas s'amuser a dupliquer l'information et a stocker aussi une table des noms de fichiers (ou bien des inodes mais bon) avec pour chaque entree un lien vers chaque processus qui l'a ouvert.
tout ca pour dire que scanner proc c'est une maniere (totalement non standard au regard de BSD POSIX et autre SUSv2) de parcourir la table faisant reference dans le kernel a ce qui t'interesse, et qu'il n'y en a pas d'autres mieux "classee" pour ton besoin je pense.
-
lsof
Regarde du côté de lsof.
/usr/sbin/lsof /path/to/file devrait normalement lister les processus qui ont un descripteur de fichier sur /path/to/file.
man lsof pour plus d'informations.
-
[^]Re: lsof
Posté par Beurt (page perso, ) le 16/07/2004 à 14:43. (lien). Évalué à 3.lsof qui est d'ailleurs très très bien pour retrouver le vilain process planté (ou non) qui t'empêche de démonter ton périphérique (coup classique sur ma Mandrake: fam que je dois presque systématiquement exterminer pour démonter CD/DVD/Clé/CompactFlash etc...)
Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.c



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.