En utilisant flock () dans c unix, quel type d’erreur j’ai reçu en essayant d’ouvrir le fichier dans un autre processus?

J’utilise flock () dans mon serveur de code / client pour autoriser la lecture de fichiers uniquement sur un processus. Mais si un autre processus essaye d’ouvrir ce fichier, le calcul est en pause, je pense plutôt que je traiterais une erreur pour donner un résultat qui explique à l’utilisateur ce qui se passe. Comment puis-je le faire?

Votre autre processus ne recevra pas d’erreur lors de l’appel open() . Les appels à flock() sont consultatifs – le verrou n’est pas appliqué en faisant des appels à open() , read() ou write() fail. D’autres processus doivent faire leurs propres appels flock() pour déterminer si le fichier a été verrouillé pour la lecture ou l’écriture.

Voir la page de manuel pour des informations complètes.

Vous devez utiliser le locking de fichier obligatoire, et non le locking de fichier consultatif. Le fichier de locking verrouillant ce flock n’empêche que deux processus de verrouiller le même fichier en même temps. Cela n’a aucun effet sur les processus non coopératifs qui ne tentent pas de verrouiller les fichiers.

Votre UNIX peut avoir ou non des verrous de fichiers obligatoires et ils peuvent ou non être activés.