Проверка активности ядра СУБД ЛИНТЕР
Назначение
Проверка активности запущенного ранее ядра СУБД ЛИНТЕР.
Синтаксис
L_LONG LinDatabaseControl(t_LINDBCtrl* LINDBCtrl, LIN_DATABASE_ALIVE,L_LONG Flags);
Входные данные
Входными данными являются:
-
инициализированная управляющая структура LINDBCtrl;
-
идентификатор
LIN_DATABASE_ALIVEкоманды «Проверка активности ядра СУБД ЛИНТЕР»; -
флаги 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");
}