Comme dans GNU C Library documentation fcntl(F_OFD_SETLK)
verrouille sur une entrée de table de fichier ouverte (généralement obtenue par open()
). Facile à comprendre.Ouvrir le fichier Description Verrouille la confusion (EDIT)
Mais dans le même next example dans la documentation:
Dans le processus d'exemple, chaque thread appelle open()
, de sorte que chaque descripteur de fichier doit pointer vers une entrée de table de fichier ouvert différent. Si le verrou acquis à partir de fcntl (fd, F_OFD_SETLKW, & lck) dans chaque thread est associé à une nouvelle entrée de table de fichiers ouverte, chaque thread obtient un verrou sur cette nouvelle entrée de table de fichier ouverte renvoyée par open() dans chaque fil.
Alors, comment les verrous sur les différentes entrées de la table de fichiers peuvent-ils fournir un accès en écriture exclusif?
Qu'est-ce qui me manque?
Je ne comprends pas la question. Pourquoi croyez-vous que '' avoir juste un verrou sur une entrée de table de fichier ouverte différente ... signifie que ce verrouillage est complètement faux ''? – Scott
L'exemple montre comment chaque thread verrouille le fichier pour obtenir un accès en écriture exclusif, provoquant le blocage des autres threads jusqu'à la libération du verrou. Maintenant, quel est ta question? – Philippos
Si le verrou acquis à partir de fcntl (fd, F_OFD_SETLKW, & lck) dans chaque thread est associé à une nouvelle entrée de table de fichiers ouverts, chaque thread obtient un verrou sur cette nouvelle entrée de table ouverte retournée par open() dans chaque thread. Alors, comment les verrous sur les différentes entrées de la table de fichiers peuvent-ils fournir un accès en écriture exclusif? –