bash flock: почему 200?

относительно этой темы: bash flock: выход, если не удается получить блокировку

Я буду признателен, если кто-нибудь объяснит мне, что означает "200".

Я читал о flock и кажется, что 200, если указать файловый дескриптор, но что такого хорошего в этом номере?

1 ответов


нет ничего особенного в числе 200. Это просто пример, используемый на главной странице flock command; и это большое число, поэтому вряд ли будет конфликтовать с дескриптором файла любого другого файла, который вы открываете во время своего скрипта.

в вашем комментарии, Вы спрашиваете о:

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

скобки () создать подоболочку; новый процесс, отдельный от родительского процесса. The 200>/tmp/blah.lockfile вызывает этот процесс, чтобы открыть /tmp/blah.lockfile для записи, на файловый дескриптор 200. Команды внутри круглых скобок выполняются внутри этой оболочки.

flock -e 200 получает эксклюзивную блокировку файла, на который указывает файловый дескриптор 200. Эксклюзивная блокировка означает, что любой другой, кто пытается получить блокировку этого файла, эксклюзивную или общую, будет блокировать (ждать), пока эта блокировка не будет отменена, или потерпит неудачу, если они нажмут тайм-аут или попросят не блокировать. Так что в течение оставшейся части тела оболочку (файл echo и sleep команды), блокировка будет удерживаться этой подсетью, и никто другой не сможет получить эту блокировку. Как только подрешетка завершится, файл будет закрыт и блокировка будет отменена.