[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Программирование: Разработка и отладка программ


Создание и выполнение команд SMIT

Каждое окно диалога Инструмента управления системой (SMIT) формирует и запускает некоторую стандартную команду. Команда, выполняемая с помощью окна диалога, определяется дескриптором cmd_to_exec в объекте sm_cmd_hdr, задающем заголовок окна диалога.

Создание задач, связанных с окном диалога

При создании команды, определенной в дескрипторе sm_cmd_hdr.cmd_to_exec, SMIT дважды просматривает набор объектов sm_cmd_opt окна диалога для получения префиксов и значений параметров. К ним относятся параметры, начальные значения которых были изменены пользователем, а также параметры с дескриптором sm_cmd_opt.required, равным "y".

При первом проходе собираются все значения объектов sm_cmd_opt (по порядку), для которых значение дескриптора prefix представляет собой пустую строку ("") или начинается со знака минус (-). Эти параметры добавляются к команде сразу после имени (в любом порядке) вместе с содержимым дескриптора prefix.

При втором проходе собираются все значения остальных объектов sm_cmd_opt (по порядку), для которых дескриптор prefix состоит из двух тире (--). Порядок следования этих параметров в команде имеет значение; они добавляются после собранных при первом проходе опций с флагами.

Примечание: SMIT в точности исполняет то, что указано в поле префикса. Если в поле префикса указан символ, зарезервированный для команд оболочки, например, звездочка (*), то перед этим символом необходимо указать двойное тире и одинарную кавычку (--'). Если этого не сделать, то при анализе символа система может принять его за символ оболочки.

Если дескрипторы disc_field_name объектов sm_cmd_opt совпадают с именами параметров, созданных предыдущими списками вариантов или предыдущей командой получения информации, то значения параметров команды в окне диалога подставляются автоматически. Эти значения параметров считаются значениями по умолчанию и, как правило, в текст команды не добавляются. Если дескриптор sm_cmd_opt.required инициализирован значением "y" или "+", то соответствующие значения параметров будут добавляться в текст команды даже в том случае, если они не были изменены в диалоговом окне. Если значение дескриптора sm_cmd_opt.required равно "?", то соответствующие значения используются только в том случае, если связанные с ними поля ввода не пустые. Эти значения параметров встраиваются в текст команды в соответствии с описанной выше двухпроходной процедурой.

Если значение дескриптора sm_cmd_opt.entry_type не равно "r", то из значений параметров удаляются начальные и конечные пробелы и символы табуляции. Если полученное в результате значение параметра представляет собой пустую строку, других действий выполнено не будет, если только дескриптор sm_cmd_opt.prefix не указан с флагом опции. Если дескриптор prefix не равен "--", то значение параметра заключается в одинарные кавычки. Параметр помещается сразу за связанным с ним префиксом (если он существует), без пробела. Кроме того, если для дескриптора multi_select установлено значение "m", то лексемы в поле ввода, разделенные пробелами, рассматриваются как отдельные параметры.

Выполнение задач, связанных с окном диалога

Перед выполнением команды, заданной в дескрипторе sm_cmd_hdr.cmd_to_exec, SMIT создает дочерний процесс. Стандартный вывод сообщений об ошибках и стандартный вывод дочернего процесса обрабатываются в соответствии с инструкциями, содержащимися в дескрипторе sm_cmd_hdr.exec_mode. Затем в этом дочернем процессе SMIT выполняет функцию setenv("ENV="), чтобы исключить возможность автоматического запуска команд из пользовательского файла $HOME/.env при запуске новой оболочки. Затем SMIT вызывает функцию execl, которая запускает оболочку ksh, используя в качестве значения параметра строку ksh -c.

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

Наличие или отсутствие соответствующего флага обозначается значением 1 или 0.

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

Значение Среда SMIT
a ASCII (текстовый) интерфейс SMIT
d Распределенный интерфейс SMIT (DSMIT)
m Оконный интерфейс SMIT (Motif)

Для того чтобы просмотреть текущие значения, вызовите после запуска SMIT функцию оболочки, а затем введите env | grep SMIT.

Вы можете отключить функциональную клавишу F9=Оболочка, установив переменную среды SMIT_SHELL=n.

Операции записи в файлы протокола должны выполняться в режиме добавления и сопровождаться немедленной записью содержимого буферных файлов на диск (если это не происходит автоматически).

Вы можете переопределить применяемый по умолчанию поток вывода дочернего процесса, указав в поле sm_cmd_hdr.exec_mode значение "i". При такой настройке управление выводом передается задаче, поскольку процесс задачи просто наследует дескрипторы файла стандартного вывода сообщений об ошибках и файла стандартного вывода.

Если в поле sm_cmd_hdr.exec_mode будет указано значение "e", то SMIT завершит работу, и вместо него будет запущена целевая задача.

Связанная информация

Раздел Инструмент управления системой (SMIT) - Обзор книги Руководство по управлению системой AIX 5L версии 5.1: Операционная система и устройства

Глава 25, Инструмент управления системой (SMIT)

Типы окон SMIT , Классы объектов SMIT) , Псевдонимы и команды быстрого доступа SMIT и Дескрипторы информационных команд SMIT

Добавление задач в базу данных SMIT , Отладка расширений базы данных SMIT , Создание справки по новой задаче SMIT

Команды dspmsg, gencat, ksh, man, odmadd, odmcreate , odmget, smit.

Класс объектов sm_name_hdr (заголовок списков вариантов SMIT) , Класс объектов sm_cmd_hdr (заголовок окна диалога SMIT) , Класс объектов sm_cmd_opt (опции команд окна диалога/списка вариантов SMIT) , Класс объектов sm_menu_opt (меню SMIT)


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]