Retourner aux forums || Retourner au forum

Linux.general : Accès simultanés à un même fichier

Posté par lcld () le 13 septembre 2005
0
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.

> Lire le message (5 commentaires, moyenne: 2).  

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.

man flock ?

Posté par Obsidian () le 13/09/2005 à 19:42. (lien). Évalué à 3.

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 ..

Posté par -=[ Benoit Plessis ]=- (page perso, ) le 13/09/2005 à 19:43. (lien). Évalué à 2.

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

Posté par slack () le 13/09/2005 à 20:02. (lien). Évalué à 1.

>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