Forum Linux.général Accès simultanés à un même fichier

Posté par  .
Étiquettes : aucune
0
13
sept.
2005
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  . É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  . É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  . É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  (site Web personnel) . É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.
  • # indications

    Posté par  . É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

Suivre le flux des commentaires

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