This section contains init descriptions that demonstrate various aspects of starting processes.
Examples in KasperskyOS Community Edition may utilize a macro-containing init description format (init.yaml.in
).
The file containing an init description is usually named init.yaml
, but it can have any name.
Connecting and starting a client process and server process
In the next example, two processes will be started: one process of the Client
class and one process of the Server
class. The names of the processes are not specified, so they will match the names of their respective process classes. The names of the executable files are not specified either, so they will also match the names of their respective classes. The processes will be connected by an IPC channel named server_connection
.
init.yaml
entities:
- name: Client
connections:
- target: Server
id: server_connection
- name: Server
Specifying the executable file to run
The next example will run a Client
-class process from the cl
executable file, a ClientServer
-class process from the csr
executable file, and a MainServer
-class process from the msr
executable file. The names of the processes are not specified, so they will match the names of their respective process classes.
init.yaml
entities:
- name: Client
path: cl
- name: ClientServer
path: csr
- name: MainServer
path: msr
Starting two processes from the same executable file
The next example will run three processes: a Client
-class process from the default executable file (Client
), and processes of the MainServer
and BkServer
classes from the srv
executable file. The names of the processes are not specified, so they will match the names of their respective process classes.
init.yaml
entities:
- name: Client
- name: MainServer
path: srv
- name: BkServer
path: srv
Starting two processes of the same class
The next example will run one Client
-class process (named Client
by default) and two Server
-class processes named UserServer
and PrivilegedServer
. The client process is linked to the server processes through IPC channels named server_connection_us
and server_connection_ps
, respectively. The names of the executable files are not specified, so they will match the names of their respective process classes.
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
Passing environment variables and arguments using the main() function
The next example will run two processes: one VfsFirst
-class process (named VfsFirst
by default) and one VfsSecond
-class process (named VfsSecond
by default). At startup, the first process receives the -f /etc/fstab
argument and the following environment variables: ROOTFS
with the value ramdisk0,0 / ext2 0 and UNMAP_ROMFS
with the value 1. At startup, the second process receives the -l devfs /dev devfs 0
argument.
The names of the executable files are not specified, so they will match the names of their respective process classes.
If the Env program is used in a solution, the arguments and environment variables passed through this program redefine the values that were defined through 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
Page top