API определен в заголовочном файле sysroot-*-kos/include/component/execution_manager/i_application_control.h
из состава KasperskyOS SDK.
API позволяет запускать процесс из исполняемого файла, а также останавливать процесс.
Сведения о функциях API приведены в таблице ниже.
Чтобы запустить процесс, нужно вызвать функцию StartEntity()
. Через входной параметр info
эта функция принимает параметры для запуска процесса в виде структуры StartEntityInfo
. Все поля этой структуры являются опциональными для инициализации. Через выходной параметр resInfo
эта функция возвращает ссылку на структуру StartEntityResultInfo
с результатами запуска процесса.
Чтобы остановить процесс, нужно вызвать функцию ShutdownEntity()
или StopEntity()
. Через входной параметр entId
эти функции принимают дескриптор, идентифицирующий запущенный процесс.
struct IApplicationController
{
struct StartEntityInfo
{
// Имя процесса. Если не указано, то будет использовано имя класса процесса.
// Если не указано имя класса процесса, то будет использовано имя исполняемого файла.
std::string entityName;
// Класс процесса. Если не указан, то будет использовано имя процесса.
// Если не указано имя процесса, то будет использовано имя исполняемого файла.
std::string eiid;
// Аргументы командной строки.
std::vector<std::string> args;
// Переменные окружения.
std::vector<std::string> envs;
// Политика перезапуска процесса при его аварийном завершении. Возможные значения:
// EntityRestartPolicy::DoNotRestart - не перезапускать.
// EntityRestartPolicy::AlwaysRestart - всегда перезапускать.
EntityRestartPolicy restartPolicy { EntityRestartPolicy::DoNotRestart };
};
struct StartEntityResultInfo
{
// Класс безопасности, присвоенный процессу.
std::string eiid;
// Дескриптор, идентифицирующий запущенный процесс.
EntityId entId;
// Идентификатор безопасности запущенного процесса.
Uid sid;
// Имя запущенного процесса.
std::string taskName;
};
};
Функции i_application_control.h
Функция |
Сведения о функции |
---|---|
|
Назначение Запускает процесс. Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Отправляет процессу сигнал на завершение. Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Немедленно останавливает исполнение процесса. Параметры
Возвращаемые значения В случае успеха возвращает |
Пример использования:
client.cpp
int main(int argc, const char *argv[])
{
// ...
const fs::path appPath{"/application"};
execmgr::IApplicationController::StartEntityResultInfo result;
execmgr::IApplicationController::StartEntityInfo info;
info.entityName = std::string{"application.Application"};
info.eiid = std::string{"application.Application"};
info.args = std::vector<std::string>{"1", "ARG1", "ARG2" , "ARG3"};
info.envs = std::vector<std::string>{"ENV1=10", "ENV2=envStr"};
std::cout << "Starting application from elf\n";
if (ac->StartEntity(appPath, info, result) != kos::Ok)
{
std::cerr << "Can not start application from " << appPath << std::endl;
return EXIT_FAILURE;
}
std::cout << "Application started with process sid " << result.sid << "\n";
auto AppId = result.entId;
if (ac->StopEntity(AppId) != kos::Ok)
{
std::cerr << "Cannot stop process " << appPath << std::endl;
return EXIT_FAILURE;
}
// ...
}
В начало