ФЭНДОМ


НАЗВАНИЕ

pctl - контроль над процессами

РЕЗЮМЕ

include "sys.m";

sys := load Sys Sys->PATH;

pctl: fn(flags: int, movefd: list of int): int;

ОПИСАНИЕ

Каждый порожденный процесс в Limbo (нить) делит с родительским процессом некоторое количество ресурсов и свойств, таких как файловое пространство имен, дескрипторы открытых файлов, текущий рабочий каталог, и так далее. Функция Pctl контролирует все это, предоставляя процессам доступ к копии ресурса, вместо действительного совместного его (ресурса) использования.

Набор процессов, имеющих совместный доступ к свойствам, называется группой; например, набор нитей, совместно использующих пространство имен, называется группой пространства имен. Каждый процесс, так или иначе, принадлежит какой-либо `группе`, в свою очередь, группа функционирует как единая программа. Поэтому с помощью команды killgrp можно убить любую группу в каталоге исполняемых приложений prog(3).

Результат вызовафункции pctl влияет как на сам процесс, который осуществил вызов, так и (косвенно, согласно установленным флагам) на любые другие группы процессов, связанных с ним. Используемые флаги:

NEWFD - выделяет процесс в новую группу файловых дескрипторов, что приводит к закрытию для процесса всех остальных файловых дескрипторов, за исключением тех, что перечислены в movefd и будут сохранены в новой группе. В дальнейшем, все изменения файловых дескрипторов группы, осуществляемые данным процессом, будут видны только этому процессу.
FORKFD - выделяет процесс в новую группу, содержащую копии текущих файловых дескрипторов. При этом дескрипторы, перечисленные в movefd закрываются в старой группе. В дальнейшем, все изменения в файловых дескрипторах этой группы, осуществляемые данным процессом, не скажутся на других процессах.
NEWNS - выделяет процесс в новую группу файлового пространства имен, в которой текущий каталог является корневым каталогом, / , нового пространства имен. Для остальных процессов текущий каталог остается текущим.
FORKNS - выделяет процесс в новую группу файлового пространства имен, которая содержит копию текущего. В дальнейшем, все изменения в этом пространстве имен, осуществляемые данным процессом, включая вызовы функции chdir, не скажутся на других процессах.
NODEVS - запрещает текущей группе процессов использование файлового пространства, закрепленного за каким-либо из `устройств` ядра (например, см. использование файловых имен, начинающихся с `#` , как описано в intro(3)). Тем не менее, даже с установленным флагом `NODEVS`, следующие `устройства`, в силу тех или иных особенностей, остаются доступны: pipe(3), env(3), srv(3) and ssl(3).
NEWENV - выделяет процесс в новую группу окружения, не содержащую переменных окружения (в `пустую` группу). В дальнейшем, все изменения в окружении процесса, вызванные им самим, не скажутся на остальных процессах.
FORKENV - выделяет процесс в новую группу окружения, содержащую копию текущих переменных окружения. В дальнейшем, все изменения в окружении процесса, вызванные им самим, не скажутся на остальных процессах.
NEWPGRP - создает процессную группу с идентификатором равным pid процесса, осуществившего вызов функции.


Так, оболочка командного процессора sh(1) в момент исполнения команды использует флаг `FORKFD`; точнее, исполяется ее встроенная функция pctl (см. sh-std(1)). Менеджер окон wm(1) запускает приложения с флагами `NEWPGRP | FORKFD`. Srv(8) использует флаги `NEWGRP | FORKNS | FORKFD`, чтобы изолировать себя от влияния запущенных им же процессов.

Кроме того, функция pctl возвращает числовое значение - идентификатор вызвавшего ее процесса, который может быть использован, например, для доступа к файлам процесса, находящимся в каталоге исполняемых приложений prog(3).

Смотри также

sh-std(1), sys-intro(2)

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Также на ФЭНДОМЕ

Случайная вики