KasperskyOS Community Edition 1.3

Создание IPC-каналов

IPC-каналы могут быть созданы статически и динамически.

Статическое создание IPC-каналов

Статическое создание IPC-канала имеет следующие особенности:

  • Создание IPC-канала выполняется родительским процессом, запускающим клиента и сервера (обычно это Einit).
  • Клиент и сервер еще не запущены в момент создания IPC-канала.
  • Нельзя создать новый IPC-канал вместо удаленного.

Статически создаются IPC-каналы, заданные в init-описании. Также для статического создания IPC-каналов можно использовать API task.h.

Чтобы получить клиентский и серверный IPC-дескрипторы и идентификатор службы (RIID), нужно использовать API sl_api.h.

Динамическое создание IPC-каналов

Динамическое создание IPC-каналов позволяет изменять топологию взаимодействия процессов "на лету". Например, это требуется, если неизвестно, какой именно сервер предоставляет службу, необходимую клиенту.

Динамическое создание IPC-канала имеет следующие особенности:

  • Создание IPC-канала выполняется совместно клиентом и сервером.
  • Клиент и сервер уже запущены в момент создания IPC-канала.
  • Можно создать новый IPC-канал вместо удаленного.

Для динамического создания IPC-каналов нужно использовать системную программу DCM.

Помимо использования системной программы DCM существует другой способ динамического создания IPC-каналов, который заключается в использовании API cm_api.h и ns_api.h, предоставляемых библиотекой libkos совместно с системной программой NameServer. Этот способ является устаревшим, поэтому его использование не рекомендуется.

Если динамически созданный IPC-канал больше не требуется, его клиентский и серверный дескрипторы можно закрыть. При необходимости IPC-канал может быть создан снова.