Forum Programmation.c Bloquer l'accès à un fichier utilisé

Posté par  .
Étiquettes : aucune
0
3
juil.
2006
J'ai une application qui écrit des informations dans un fichier, et je désirerai que ce fichier soit en lecture seule pour tous les utilisateurs/programmes (excepté mon application) tant que mon application n'est pas terminée. Donc je veux que n'importe qui puisse lire le contenu du fichier mais pas l'éditer.

Quelqu'un a t'il une idée ou une piste pour m'aider ?
  • # flock(2)

    Posté par  . Évalué à 6.

    Tu peux essayer flock(2) (BSD) ou lockf(3) (POSIX), mais ce sont des verrous 'coopératifs'; c'est à dire que si une autre application quelconque a les droits sur le fichier verrouillé, elle peut passer outre.

    Si tu n'a pas d'impératif de portabilité, tu peux faire du mandatory locking (imposé à tous les processus) avec fcntl(2), mais bon il faut que le système de fichier le gère et soit monté avec l'option -o mand, etc... Donc je suis pas sûr que ça t'intéresse.

    Sinon, une solution bête et méchante serait de copier le fichier en mémoire (pas avec mmap(2), les changements faits par d'autre processus seraient visibles) et d'écraser l'original quand tu as fini de travailler dessus en mémoire.
  • # chmod ?

    Posté par  . Évalué à 1.

    et si tu installe ton appli par un utilisateur donné.

    il te suffirait alors de mettre les droits genre 755 sur les fichiers de ton appli pour que les utilisateurs ne puisse que lire le contenu des fichiers.

    si par contre tu souhaite bloquer l'acces en lecture le temps que ton appli accede et modifie le contenu du fichier, alors c'est bien du coté des flock() et autres verrou exclusif.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.