Personnellement, j'utiliserais plutot flock !
Tu fais un :
use Fcntl qw(:DEFAULT :flock);
Puis ensuite, juste après avoir ouvert le fichier (avec open ou meme sysopen),
si tu ne comptes que le lire : flock(FILEHANDLE, LOCK_SH);
si tu risques de le modifier: flock(FILEHANDLE, LOCK_EX);
SH = shared : verrou partagé
EX = exclusive : verrou exclusif
En fait, le concept est que le LOCK_SH ne sert strictement à rien s'il n'y a pas de LOCK_EX.
Car il peut y avoir plusieurs fichiers verrouillés en meme temps en SH, mais en revanche, s'il doit y avoir un verrou EX, la il sera seul (lui attendra que tous les autres aient fait close, et tous les autres (EX ou SH) attendront ensuite que lui seul ait fait close pour continuer)
flock fait en fait une sorte de sleep en attendant que la voie soit libre.
Message édité par MisterBark le 24-11-2009 à 04:59:02
---------------
La vie c'est comme une boite de chocolats, on ne sait jamais sur quoi on va tomber. (Forrest Gump)