Компонент ExecutionManager предоставляет интерфейс на языке C++ для создания, запуска и остановки процессов в решениях, построенных на базе KasperskyOS.
Интерфейс компонента ExecutionManager не подходит для использования в коде, написанном на языке C. Для управления процессами на языке C используйте интерфейс task.h библиотеки libkos.
API компонента ExecutionManager представляет собой надстройку над IPC, которая позволяет упростить процесс разработки программ. ExecutionManager является отдельной системной программой, доступ к которой осуществляется через IPC, но при этом разработчикам предоставляется клиентская библиотека, которая скрывает необходимость использования IPC-вызовов напрямую.
Программный интерфейс компонента ExecutionManager описан в статье "Компонент ExecutionManager".
Сценарий использования компонента ExecutionManager
Здесь и далее клиентом называется приложение, использующее API компонента ExecutionManager для управления другими приложениями.
Типовой сценарий использования компонента ExecutionManager включает следующие шаги:
find_package (execution_manager REQUIRED)
include_directories (${execution_manager_INCLUDE})
add_subdirectory (execution_manager)
Для работы программы ExecutionManager необходима программа BlobContainer
. Эта программа автоматически добавляется в решение при добавлении ExecutionManager.
create_execution_manager_entity()
из CMake-библиотеки execution_manager
.Чтобы собрать программу ExecutionManager, необходимо в корневой директории проекта создать директорию с именем execution_manager
, а в ней создать файл CMakeLists.txt
, в котором содержится команда create_execution_manager_entity()
.
CMake-команда create_execution_manager_entity()
принимает следующие параметры:
Обязательный параметр ENTITY
, в котором указывается имя исполняемого файла для программы ExecutionManager.
Опциональные параметры:
DEPENDS
- дополнительные зависимости для сборки программы ExecutionManager.MAIN_CONN_NAME
- имя IPC-канала для соединения с процессом ExecutionManager. Должно совпадать со значением переменной mainConnection
при обращении к API ExecutionManager в коде клиента.ROOT_PATH
- путь к корневой директории для служебных файлов программы ExecutionManager, по умолчанию "/ROOT"
.VFS_CLIENT_LIB
- имя клиентской транспортной библиотеки для подключения программы ExecutionManager к программе VFS
.include (execution_manager/create_execution_manager_entity)
create_execution_manager_entity(
ENTITY ExecMgrEntity
MAIN_CONN_NAME ${ENTITY_NAME}
ROOT_PATH "/root"
VFS_CLIENT_LIB ${vfs_CLIENT_LIB})
BlobContainer
.CMakeLists.txt
для сборки клиента добавить следующую команду:target_link_libraries (<имя CMake-цели для сборки клиента> ${execution_manager_EXECMGR_PROXY})
execution_manager.ExecMgrEntity
:execute
для всех классов запускаемых процессов.VFS
.BlobContainer
.Sync
, Task
, VMM
, Thread
, HAL
, Handle
, FS
, Notice
, CM
и Profiler
(их описания находятся в директории sysroot-*-kos/include/kl/core
из состава SDK).sysroot-*-kos/include/kl/execution_manager
из состава SDK).Для этого необходимо использовать заголовочный файл component/package_manager/kos_ipc/package_manager_proxy.h
. Подробнее см. "Компонент ExecutionManager".