web-dev-qa-db-fra.com

bash flock: Pourquoi 200?

En ce qui concerne ce thread: bash flock: exit if can't acquisition lock

J'apprécierai si quelqu'un peut m'expliquer ce que signifie le "200".

J'ai lu sur le troupeau et il semble que 200 si pour spécifier un descripteur de fichier, mais qu'est-ce qui est si bon avec ce nombre?

31
Subway

Le nombre 200 n'a rien de spécial. Il se trouve que c'est l'exemple utilisé dans la page de manuel de la commande flock; et il se trouve qu'il s'agit d'un grand nombre, il est donc peu probable qu'il entre en conflit avec le descripteur de fichier de tout autre fichier que vous ouvrez pendant votre script.

Dans votre commentaire, vous posez des questions sur:

( 
  flock -e 200
  echo "In critical section"
  sleep 5 
) 200>/tmp/blah.lockfile 
echo "After critical section"

Les parenthèses () crée un sous-shell; un nouveau processus, distinct du processus parent. Le 200>/tmp/blah.lockfile provoque l'ouverture de ce processus /tmp/blah.lockfile pour l'écriture, sur le descripteur de fichier 200. Les commandes entre parenthèses sont exécutées dans ce Shell.

flock -e 200 obtient un verrou exclusif sur le fichier pointé par le descripteur de fichier 200. Un verrou exclusif signifie que toute autre personne qui essaie d'obtenir un verrou sur ce fichier, exclusif ou partagé, bloquera (attendra) jusqu'à ce que ce verrou soit abandonné, ou échouer s'ils ont atteint un délai d'attente ou ont demandé de ne pas bloquer. Ainsi, pendant le reste du corps du sous-shell (les commandes echo et sleep), le verrou sera détenu par ce sous-shell, et personne d'autre ne pourra l'obtenir. Une fois le sous-shell terminé, le fichier sera fermé et le verrou abandonné.

43
Brian Campbell