Retourner aux forums || Retourner au forum
Linux.general : Accès simultanés à un même fichier
Posté par lcld () le 13 septembre 2005De l'autre, il y a Linux, qui ne semble pas connaître l'accès exclusif à un fichier. Jusqu'à maintenant, j'ai trouvé ça fantastique, mais quand on y pense, est-ce sûr ??
J'en ai pris conscience alors que j'administrais ma boîte aux lettres. J'ai actuellement 2 adresses. Une chez mon FAI, et une sur mon routeur (P225mmx, Sarge). D'où 3 applications qui accèdent à un même fichier mbox :
1. getmail pour la réception de mails sur l'adresse de mon FAI
2. exim pour la réception de mails sur l'autre adresse
3. popa3d pour la récupération de mes mails dans Thunderbird
Comment peut-on s'assurer que le fichier mbox ne soit jamais corrompu, ni mal lu ? Que je ne perde aucun courrier.
> Lire le message (5 commentaires, moyenne: 2).
man flock ?
Et flock(), ça sert à quoi ?
Le détail, c'est qu'il me semble qu'à priori ces verrous sont coopératifs, et qu'il faut explicitement monter le filesystem en « mandatory » pour qu'ils deviennent vraiment incontournables.
Comment peut-on s'assurer que le fichier mbox ne soit jamais corrompu, ni mal lu ? Que je ne perde aucun courrier.
Programmer proprement ?
Plus sérieusement, un verrou n'empêchera jamais un processus de corrompre un fichier s'il en a envie. Il ne faut pas que les facilités du système servent à palier les faiblesses de la conception initiale de ton logiciel.
-
[^]Re: man flock ?
Posté par lcld () le 13/09/2005 à 23:15. (lien). Évalué à 1.Merci à vous 3 pour m'avoir indiqué le mot magique.
(Pourquoi n'ai-je pas pensé à regardé fcntl ?)
Chuis bon pour regarder les sources, mais je doute qu'ils fassent cette erreur. Par exemple pour getmail :
$ grep -A 2 'Open mbox file' /usr/lib/getmail/getmail_mbox.py
# Open mbox file
f = open(mbox, 'ab+')
lock_file(f)
J'aime beaucoup ce passage dans linux/Documentation/mandatory.txt : "The most commonly used example of this (and in the case of sendmail, the most troublesome) is access to a user's mailbox."
Bon, je n'ai plus qu'à potasser tout ça.
-
[^]Re: man flock ?
Posté par lcld () le 14/09/2005 à 01:04. (lien). Évalué à 3.Après quelques tests, y a pas à dire, c'est vraiment coopératif !
Il faut 3 conditions pour que ce soit impératif :
1. utiliser fcntl (ou lockf) ; ça ne marche pas avec flock
2. monter le système avec l'option mand, ce qui n'est pas le cas par défaut
3. appliquer un 'chmod g+s-x' sur le fichier
Hum t'inquiete pas pour ca va, il y en a d'autre qui y on pensé avant ..
Bien sur que linux (plus generalement les OS compatible Unix) permet le
verrouillage d'un fichier pour eviter les ecritures concurentes.
Si tu veut savoir comment cela se programme => man flock.
Il [e2fsck] a bien démarré, mais il m'a rendu la main aussitot en me disant "houlala, c'est pas beau à voir votre truc, je préfèrerai que vous teniez vous même la tronçonneuse" (traduction libr
indications
>De l'autre, il y a Linux, qui ne semble pas connaître l'accès exclusif à un fichier.
Un programme peut demander l'accès exclusif à un fichier ou à une portion précise du fichier. Voir les fonctions fcntl() flock() lock() et compagnies ... (voir les sources du kernel)
>Comment peut-on s'assurer que le fichier mbox ne soit jamais corrompu, ni mal lu >? Que je ne perde aucun courrier.
Consulte la documentation de ces logiciels (dans ta distribution ou sur internet). Si ces logiciels sont bien programmés, ils ne doivent pas modifier simultanement la même portion de ce fichier. A vérifier.
slack
Revenir en haut de page || Retourner aux forums || Retourner au forum


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.