Следующая:UUCP Lock Files, Следующая:Execution File Format, Предыдущая:UUCP Grades, Вверх:Protocols
Файлы блокирования UUCP
Данное обсуждение применимо только для Unix. Я (автор) понятия не имею, как блокировать UUCP порты на других системах.
Для блокирования последовательных портов и систем UUCP создает
файлы. На большинстве систем, но не на всех системах, те же самые
файлы блокировки используются программой cu
для координации
доступа к последовательным портам. На некоторых системах программа
getty
также использует данные файлы блокировки, часто под
именем uugetty
.
Файл блокировки обычно содержит ID блокирующего процесса. Это позволяет легко определить, является ли блокировка все еще допустимой. При блокировке создается временный файл, который затем прилинковывается к имени, которое должно быть блокировано. Если создание ссылки заканчивается неудачно, из-за того, что файл с таким же именем уже существует, то из существующего файла читается идентификатор процесса ID. Если процесс с таким ID существует, то попытка блокировки заканчивается неудачно. В противном случае файл блокировки удаляется, и делается следующая попытка блокировки.
Старшие версии пакетов UUCP помещают файлы блокировки в главный
spool каталог UUCP, /usr/spool/uucp
. HDB UUCP размещает файлы
блокировки в собственном каталоге, обычно /usr/spool/locks
или
/etc/locks
.
Файл блокировки UUCP содержит ID процесса в виде четырехбайтового
бинарного номера. Порядок байтов является хост зависимым. HDB UUCP
хранит идентификатор процесс ID в виде десяти байтового ASCII числа,
который завершается символом новой строки. Например, если процесс с
идентификатором процесса 1570 владеет файлом блокировки, то данный
файл содержит одиннадцать символов space, space, space, space, space,
space, one, five, seven, zero, newline. Некоторые версии протокола
UUCP добавляют вторую строку, указывающую, какая программа создала
блокировку (uucp
, cu
, или getty/uugetty
).
Я (автор) также видел третий тип файла UUCP блокировки, который не
содержит ID процесса вообще.
Файлы блокировки традиционно начинаются со строки LCK..
, за
которой следует имя основного устройства. Например, чтобы блокировать
/dev/ttyd0
создается файл LCK..ttyd0
. Под SCO Unix, имя
файла блокировки всегда устанавливается в нижний регистр, даже если в
названии устройства имеются буквы верхнего регистра.
В системе 'System V Release 4 UUCP' файлы блокировки именуются,
используя главный номер и младший номер устройства, а не название
устройства. Файл именуется как LK.XXX.YYY.ZZZ
,
где XXX, YYY и ZZZ - три десятичных числа. XXX - это
главный номер устройства, содержащего каталог файлов устройств (например,
/dev
). YYY - это главный номер файла устройства. ZZZ -
минорный номер файла устройства. Если s
содержит результат вызова
stat (stat("/dev/ttyd0", *s)
), то следующая строка кода C выводит
соответствующее имя файла блокировки:
printf ("LK.%03d.%03d.%03d", major (s.st_dev), major (s.st_rdev), minor (s.st_rdev));Преимущество данной системы состоит в том, что, что если даже существует несколько ссылок на то же самое устройство, все они будут использовать то же самое имя файла блокировки.
Когда выполняется две или большее количество копий uuxqt
,
требуется некоторый тип блокировки, для того, чтобы обеспечить, что
выполняемая задача запускается только в одном экземпляре. Я не знаю,
как большинство пакетов UUCP обрабатывают данную ситуацию. Taylor UUCP
использует файл блокировки для каждой исполняемой задачи. Имя файла
блокировки то же самое, что и имя файла X.*
, за исключением того,
что стартовая буква X
заменяется на букву L
. Файл блокировки
содержит ID процесса как это описано выше.