Проверка активности ядра СУБД ЛИНТЕР

Назначение

Проверка активности запущенного ранее ядра СУБД ЛИНТЕР.

Синтаксис
 
L_LONG LinDatabaseControl(t_LINDBCtrl* LINDBCtrl, LIN_DATABASE_ALIVE,L_LONG Flags);
Входные данные

Входными данными являются:

  1. инициализированная управляющая структура LINDBCtrl;

  2. идентификатор LIN_DATABASE_ALIVE команды «Проверка активности ядра СУБД ЛИНТЕР»;

  3. флаги Flags, модифицирующие поведение команды.

Допустимые флаги:

Флаг Значение
LIN_DATABASE_ALIVE_SIG Проверка активности ядра СУБД с помощью сигнала
Выходные данные

Выходными данными является управляющая структура LINDBCtrl.

В управляющей структуре будут возвращены:

Имя поля Значение
RetStatus Библиотечный код завершения
SysStatus Системный код завершения
Описание

На компьютере могут быть активны несколько ядер СУБД ЛИНТЕР. Функция проверяет активность того ядра, путь к которому прописан в поле LinterPath управляющей структуры LINDBCtrl. Если это поле не инициализировано, фиксируется ошибка.

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

По умолчанию проверка активности запущенного ранее ядра СУБД ЛИНТЕР (или ядра, к которому ранее было выполнено подключение командой LIN_DATABASE_ATTACH) выполняется путем запуска программы chklinter. Программа chklinter должна находиться в подкаталоге /bin каталога, заданного в поле LinterPath.

Если установлен флаг LIN_DATABASE_ALIVE_SIG, проверка активности ядра будет выполняться путем посылки 0 сигнала.

Возвращаемые значения

Функция возвращает:

  • 0 – нормальное завершение;

  • -1 – активность ядра СУБД не проверена, работа ядра остановлена.

Коды завершения
Код Описание
E_LINCTRL_CHKFAILED Программа chklinter не подтвердила активность ядра (неудачный код завершения chklinter)
E_LINCTRL_KILLFAILED Неудачная проверка активности ядра с помощью сигнала
E_LINCTRL_RUN Неудачный запуск программы chklinter
E_LINCTRL_NOMEM Невозможность выделения динамической памяти для полей управляющей структуры LINDBCtrl
E_LINCTRL_LINPID Pid ядра СУБД ЛИНТЕР неизвестен. Не выполнена команда LIN_DATABASE_ATTACH или LIN_DATABASE_RUN
Пример
#include < stdio.h >
#include < stdlib.h >
#include < string.h >
#include "linctrl.h"
#include "exlib.h"

void  PrintError(t_LINDBCtrl *LINDBCtrl);

void  main()
  {
  t_LINDBCtrl LINDBCtrl;
  CHAR  LinterPath[]="/usr/linter";
  LONGINT Err;
  Err=LINDBCtrlInit(&LINDBCtrl,LinterPath);
  if (Err != NORMAL)
    PrintError(&LINDBCtrl);
  printf("Initialisation LINDBCtrl\n");
  Err=LinDatabaseControl(LINDBCtrl, LIN_DATABASE_ALIVE,
  LIN_DATABASE_ALIVE_SIG);
  If (Err != NORMAL)
    PrintError(&LINDBCtrl);
  printf("Alive DBMS Linter\n");
  printf("End Example\n");
  }