bash flock:为什么200?

时间:2012-11-25 14:17:35

标签: bash flock

关于该线程: bash flock: exit if can't acquire lock

如果有人可以向我解释' 200'是什么,我会很感激。代表。

我已经阅读了关于flock的内容,如果要指定文件描述符,似乎只有200,但这个数字有什么好处呢?

1 个答案:

答案 0 :(得分:41)

没有什么特别的数字200.它恰好是flock命令的手册页中使用的示例;并且它恰好是一个大数字,因此它不太可能与您在脚本中打开的任何其他文件的文件描述符冲突。

在你的评论中,你会问:

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

括号()创建一个子shell;一个与父进程分开的新进程。 200>/tmp/blah.lockfile导致该进程在文件描述符200上打开/tmp/blah.lockfile进行写入。括号内的命令在该shell中执行。

flock -e 200获取文件描述符200指向的文件的独占锁。独占锁意味着试图获取该文件锁定的任何其他人(独占或共享)将阻塞(等待)直到此锁已被放弃,或者如果超时或要求不阻止则失败。因此,在子shell的主体的其余部分(echosleep命令)中,锁将由该子shell保持,并且没有其他人可以获得该锁。子shell完成后,文件将被关闭并放弃锁定。