Следующая:UUCP Lock Files, Следующая:, Предыдущая:UUCP Grades, Вверх:Protocols



UUCP Lock Files

Файлы блокирования 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 процесса как это описано выше.