D'un côté, il y a Windows, où il est bien souvent énervant de ne pas pouvoir ouvrir un fichier en lecture parce qu'il est déjà ouvert.
De 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.
# man flock ?
Posté par Obsidian . Évalué à 3.
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.
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 . Évalué à 1.
(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 . Évalué à 3.
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 ..
Posté par -=[ silmaril ]=- (site web personnel) . Évalué à 2.
verrouillage d'un fichier pour eviter les ecritures concurentes.
Si tu veut savoir comment cela se programme => man flock.
# indications
Posté par slack . Évalué à 1.
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
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.