Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1097 connectés 

  FORUM HardWare.fr
  Programmation
  C

  fcntl et verrou

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fcntl et verrou

n°1471831
vincent0
Posté le 07-11-2006 à 21:05:12  profilanswer
 

Hello,
 
J'ai ceci:

Code :
  1. struct flock fl;
  2. fl.l_whence=SEEK_SET;
  3. fl.l_pid=getpid();
  4. fl.l_start=0;
  5. fl.l_len=0;
  6. //hdl = open(...);
  7. fl.l_type=F_RDLCK;
  8. if( fcntl(hdl, F_SETLK, &fl)==-1)
  9. //err
  10. if(fcntl(hdl, F_GETLK, &fl)==-1)
  11. //err
  12. printf("%d : %d \n", fl.l_type, F_UNLCK);


 
Pourquoi printf m'affiche 2 fois la même valeur ? Alors que le fichier devrait être verrouillé et donc fl.l_type devrait être égal à F_RDLCK et non à F_UNLCK !
 
Merci...


Message édité par vincent0 le 07-11-2006 à 21:06:27
mood
Publicité
Posté le 07-11-2006 à 21:05:12  profilanswer
 

n°1471936
matafan
Posté le 07-11-2006 à 23:01:40  profilanswer
 

Parce que ton fichier est locke par un read lock, et qu'un meme lock peut parfaitement etre pris plusieurs fois en read. Donc dans ton deuxieme fcntl, la prise de lock reussirait. Dans ce cas fcntl ne prend pas le lock, et renvoie F_UNLCK dans l_type. C'est dans le man.

n°1472005
vincent0
Posté le 08-11-2006 à 07:27:38  profilanswer
 

Merci pour cette réponse...
 
Mais je ne comprend plus trop bien à quoi sert un lock sur read alors !
Et si je remplace fl.l_type=F_RDLCK par ceci fl.l_type=F_WRLCK, j'ai exactement le même problème.

n°1472558
matafan
Posté le 08-11-2006 à 18:42:46  profilanswer
 

Un read lock sert a s'assurer que les donnees que tu lis sont coherentes, c'est-a dire que personne ne vient modifier le fichier pendant que tu le lis. Par contre d'autres applis peuvent venir lire le fichier simultanement, ca n'a aucune importance. Donc :
 
- Quand un read lock est positionne sur un fichier, personne ne peut prendre de write lock sur ce fichier. Par contre il est toujours possible de prendre un read lock.
 
- Quand un write lock est positionne sur un fichier, personne ne peut prendre de lock sur ce fichier, read ou write.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  fcntl et verrou

 

Sujets relatifs
[Resolu] [C Linux] poser un verrou sur un fichierFonction fcntl
ADO verrou sur une ligne d'une table[VB_Access] Probleme Verrou BD access
Developpement sous CVi d'une interface de controle de verrou de porte.supprimer verrou base de donnée oracle 8.1.7
Verrou partagé (verrou en lecture)[SQL Server] création de verrou bloquant
Plus de sujets relatifs à : fcntl et verrou


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR