Руководство по администрированию UNIX System V

Настройка программы интерфейса


Вы хотите убедиться, что настроенная программа интерфейса устанавливает требуемые режимы stty (характеристики терминала, такие как скорость передачи или параметры вывода). Стандартная программа интерфейса делает это, и вы можете последовать этому примеру. Найдите часть, которая начинается с комментария командного файла:

## Initialize the printer port

Выполняйте код, используемый стандартной программой интерфейса. Он устанавливает как режимы по умолчанию, так и настраиваемые режимы, задаваемые с помощью LP или пользователем строкой следующего вида:

stty mode options 0<&1

Эта командная строка обрабатывает стандартный ввод для команды stty из порта принтера. Пример строки команды stty, которая устанавливает скорость передачи на 1200 и устанавливает некоторые необязательные режимы:

stty -parenb -parodd 1200 cs8 cread clocal ixon 0<&1

Одна из характеристик, не устанавливаемая стандартной программой интерфейса - управление потоками аппаратных средств. Способ ее установки будет различен в зависимости от аппаратных средств вашего компьютера. Найдите часть, которая начинается с комментария командного файла:

# Here you may want to add other port # initialization code

Вследствии того, что различные принтеры имеют разное число колонок, убедитесь, что заголовок и концевик для вашей программы интерфейса соответствуют вашему принтеру. Стандартная программа интерфейса распечатывает заглавную страницу, которая сооветствует 80-колоночной странице (за исключением "шапки" пользователя, которая может быть длиннее). Найдите часть в тексте стандартной программы интерфейса, которая начинается с комментария:

## Print the banner page

Некоторые прикладные приложения программы, функционирующие с конкретными принтерами, могут потребовать отключения прерывания страницы. Если вы должны отключить прерывание страницы, вы можете модифицировать стандартную программу интерфейса (/usr/lib/lp/model/standard) на строке 192, изменив "no" на "yes".

Настроенная программа интерфейса должна распечатывать все сообщения об ошибках, связанных с пользователем, в стандартном выводе или в стандартном выводе ошибок. Сообщения, отосланные в стандартный файл ошибок, будут переданы пользователю почтой; сообщения, направленные в стандартный вывод, будут стоять в конце страницы, откуда они могут быть считаны пользователем, когда он получит вывод.

После завершения распечатки ваша программа интерфейса должна выйти с кодом, который сообщает о состоянии выполнения заданий по распечатке. Этот код интерпретируется сервисом LP следующим образом:

Код Значение для LP
0 Запрос выполнен успешно. Если был сбой принтера, он утранен
1 до 127 Возникла проблема с распечаткой этого конкретного запроса (например, слишком много нераспечатываемых символов или запрос превышает возможности принтера). Эта проблема не повлияет на будущие запросы. LP уведомляет того, кто выдал этот запрос, при его распечатке. Если возник сбой принтера, он устранен
128 Зарезервирован для внутреннего использования севисом LP
129 При распечатке запроса возник сбой принтера. Это повлияет на будущие запросы. Если механизм восстановления после сбоя даст указание LP подождать решения проблемы администратором, он запретит использование принтера
более 129 Зарезервировано для внутреннего использования сервисом LP
<
Как показывает эта таблица, одним из способов извещения администратора о сбое принтера является возврат кода 129 программой интерфейса. После устранения сбоя LP вновь распечатывает запрос с самого начала. Способом получения информации о сбое без повторной распечатки всего запроса является отсылка программой интерфейса сообщения сервису LP и ожидание его устранения. После устранения сбоя программа интерфейса может возобновить распечатку файла пользователя. После окончания распечатки программа интерфейса может возвратить нулевой код, будто бы сбоя и не возникало.

Сообщения о сбоях можно отослать LP с помощью программы lp.tell. Для обращения к этой программе в стандартной программе интерфейса используется переменная командного файла $LPTELL. Программа обрабатывает свой стандартный ввод и отсылает его LP, где он помещается в сообщение, предупреждающее администратора о сбое принтера. Если стандартный ввод пуст, lp.tell не инициирует предупреждение. Проверьте код стандартной программы интерфейса после комментариев:

# Here's where we set up the $LPTELL programm # to capture fault messages. # Here's where we print the file.

При использовании специального кода возврата 129 или программы lp.tell, уже нет необходимости программе интерфейса запрещать сам принтер. Ваша программа может запретить принтер прямо, но это отменит механизм предупреждения о сбоях. Они отсылаются только, если LP выявляет, что принтер дал сбой, а специальный код и программа lp.tell являются главными инструментами его выявления.

Если LP нужно прервать распечатку файла в какой-то момент, он остановит программу интерфейса сигналом 15. Если программа интерфейса останавливается при получении любого другого сигнала, LP предполагает, что будущие запросы не будут подвергнуты влиянию и будет продолжать использовать принтер. LP уведомит того, кто выдал запрос на распечатку, что запрос завершен неуспешно.

| |


Содержание раздела