Запуск процессов с помощью системной программы ExecutionManager
Компонент ExecutionManager предоставляет интерфейс на языке C++ для создания, запуска и остановки процессов в решениях, построенных на базе KasperskyOS.
Интерфейс компонента ExecutionManager не подходит для использования в коде, написанном на языке C. Для управления процессами на языке C используйте API task.h библиотеки libkos.
Используя компонент ExecutionManager можно запускать процессы из:
- исполняемого файла, для которого известно его расположение в файловой системе;
- исполняемого файла, установленного компонентом PackageManager в решение на базе KasperskyOS из KPA-пакета.
API компонента ExecutionManager представляет собой надстройку над IPC, которая позволяет упростить процесс разработки программ. ExecutionManager является отдельной системной программой, доступ к которой осуществляется через IPC, но при этом разработчикам предоставляется клиентская библиотека, которая скрывает необходимость использования IPC-вызовов напрямую.
Программный интерфейс компонента ExecutionManager описан в статье "Компонент ExecutionManager".
Сценарий использования компонента ExecutionManager
Здесь и далее клиентом называется приложение, использующее API компонента ExecutionManager для управления другими приложениями.
Системная программа ExecutionManager поставляется в составе загрузочного образа KasperskyOS и запускается автоматически при запуске решения.
Типовой сценарий использования компонента ExecutionManager включает следующие шаги:
- Компоновка исполняемого файла клиента с клиентской прокси-библиотекой ExecutionManager, для чего необходимо в файле
CMakeLists.txtдля сборки клиента добавить следующую команду:target_link_libraries (<имя CMake-цели для сборки клиента> execution_manager::execution_manager_proxy)
- Добавление разрешений для необходимых событий в описание политики безопасности решения:
- Чтобы программа ExecutionManager могла запускать другие процессы, политика безопасности решения должна разрешать следующие взаимодействия для класса процессов
execution_manager.ExecMgrEntity:- События безопасности вида
executeдля всех классов запускаемых процессов. - Доступ ко всем службам программы VFS.
- Доступ ко всем службам программы BlobContainer (их описания находятся в директории
sysroot-*-kos/include/kl/bcиз состава SDK). - Доступ к службам ядра
Sync,Task,VMM,Thread,HAL,Handle,FS,Notice,CMиProfiler(их описания находятся в директорииsysroot-*-kos/include/kl/coreиз состава SDK).
- События безопасности вида
- Чтобы клиент мог обращаться к программе ExecutionManager, политика безопасности решения должна разрешать следующие взаимодействия для класса клиентского процесса:
- Доступ к соответствующим службам программы ExecutionManager (их описания находятся в директории
sysroot-*-kos/include/kl/execution_managerиз состава SDK).
- Доступ к соответствующим службам программы ExecutionManager (их описания находятся в директории
- Чтобы программа ExecutionManager могла запускать другие процессы, политика безопасности решения должна разрешать следующие взаимодействия для класса процессов
- Использование API программы ExecutionManager в коде клиента.
Для этого необходимо использовать заголовочный файл
component/execution_manager/kos_ipc/execution_manager_proxy.h. Подробнее см. "Компонент ExecutionManager".