Здесь собраны 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
В начало