Содержание
Примеры init-описаний
Здесь собраны init-описания, демонстрирующие различные аспекты запуска процессов.
В примерах в составе KasperskyOS Community Edition может использоваться формат init-описания с макросами (init.yaml.in
).
Файл с init-описанием обычно называется init.yaml
, хотя может иметь любое имя.
Соединение и запуск процесса-клиента и процесса-сервера
В следующем примере будут запущены два процесса: класса Client
и класса Server
. Имена процессов не указаны, поэтому они будут совпадать с именами классов процессов. Имена исполняемых файлов также не указаны, они также будут совпадать с именами классов. Процессы будут соединены IPC-каналом с именем server_connection
.
init.yaml
entities:
- name: Client
connections:
- target: Server
id: server_connection
- name: Server
Указание исполняемого файла для запуска
В следующем примере будут запущены: процесс класса Client
из исполняемого файла cl
, процесс класса ClientServer
из исполняемого файла csr
и процесс класса MainServer
из исполняемого файла msr
. Имена процессов не указаны, поэтому они будут совпадать с именами классов процессов.
init.yaml
entities:
- name: Client
path: cl
- name: ClientServer
path: csr
- name: MainServer
path: msr
Запуск двух процессов из одного исполняемого файла
В следующем примере будут запущены три процесса: процесс класса Client
из исполняемого файла по умолчанию (Client
), а также процессы классов MainServer
и BkServer
из исполняемого файла srv
. Имена процессов не указаны, поэтому они будут совпадать с именами классов процессов.
init.yaml
entities:
- name: Client
- name: MainServer
path: srv
- name: BkServer
path: srv
Запуск двух процессов одного класса
В следующем примере будут запущены: один процесс класса Client
(с именем по умолчанию – Client
) и два процесса класса Server
с именами UserServer
и PrivilegedServer
. Клиентский процесс связан с серверными процессами IPC-каналами с именами server_connection_us
и server_connection_ps
, соответственно. Имена исполняемых файлов не указаны, поэтому они будут совпадать с именами классов процессов.
init.yaml
entities:
- name: Client
connections:
- id: server_connection_us
target: UserServer
- id: server_connection_ps
target: PrivilegedServer
- task: UserServer
name: Server
- task: PrivilegedServer
name: Server
Передача переменных окружения и аргументов функции main()
В следующем примере будут запущены два процесса: один класса VfsFirst
(с именем по умолчанию – VfsFirst
) и второй класса VfsSecond
(с именем по умолчанию – VfsSecond
). Первый процесс при запуске получит аргумент -f /etc/fstab
, а также переменные окружения: ROOTFS
со значением ramdisk0,0 / ext2 0 и UNMAP_ROMFS
со значением 1. Второй процесс при запуске получит аргумент -l devfs /dev devfs 0
.
Имена исполняемых файлов не указаны, поэтому они будут совпадать с именами классов процессов.
Если в решении используется программа Env, то передаваемые через нее аргументы и переменные окружения переопределяют значения, заданные через init.yaml
.
init.yaml
entities:
- name: VfsFirst
args:
- -f
- /etc/fstab
env:
ROOTFS: ramdisk0,0 / ext2 0
UNMAP_ROMFS: 1
- name: VfsSecond
args:
- -l
- devfs /dev devfs 0