struct inheritance

Структура, характеризующая какие параметры наследуются процессом от родителя

Прототип:

#include <spawn.h>
typedef struct inheritance {
unsigned long flags;
pid_t pgroup; /* SPAWN_SETGROUP должен быть установлен в flags */
sigset_t sigmask; /* SPAWN_SETSIGMASK должен быть установлен в flags */
sigset_t sigdefault; /* SPAWN_SETSIGDEF должен быть установлен в flags */
sigset_t sigignore; /* SPAWN_SETSIGIGN должен быть установлен в flags */
unsigned long stack_max; /* SPAWN_SETSTACKMAX должен быть установлен в flags */
#if __INT_BITS__ != 32
long policy; /* SPAWN_EXPLICIT_SCHED должен быть установлен в flags */
#else
int policy; /* SPAWN_EXPLICIT_SCHED должен быть установлен в flags */
#endif
_Uint32t nd; /* SPAWN_SETND должен быть установлен в flags */
_Uint32t runmask; /* SPAWN_EXPLICIT_CPU должен быть установлен в flags */
struct sched_param param; /* SPAWN_EXPLICIT_SCHED должен быть установлен в flags */
} spawn_inheritance_type;

Описание:

Тип позволяет задавать перечень параметров, наследуемых процессом от родителя при создании. Структура включает следующие поля:

flags
0 или другое значение, созданное с помощью следующих битов:
SPAWN_ALIGN_DEFAULT
Использовать настройки системы по умолчанию для выравнивания.
SPAWN_ALIGN_FAULT
Нарушение границ ссылок будет приводить к падению.
SPAWN_ALIGN_NOFAULT
Нарушение границ ссылок не будет приводить к падению, предпринять попытку их исправления (это может проходить медленно).
SPAWN_CHECK_SCRIPT
Запустить оболочку, передав путь как скрипт.
SPAWN_DEBUG
Отладка процесса (используется только для отладки ядра).
SPAWN_EXEC
spawn будет работать как exec*(): будет произведена замена вызываемой программы в памяти загружаемой программой. В случае успеха возврат производит не вызывающая программа.
SPAWN_EXPLICIT_CPU
Установить маску запуска и маску наследования равными полю runmask в структуре наследования. Если бит не задан, дочерний процесс получает маску наследования от вызывающего потока.
SPAWN_EXPLICIT_SCHED
Установить в качестве политики диспетчеризации значение из поля policy, параметры диспетчеризации взять из поля param.
SPAWN_HOLD
Удерживать процесс для отладки (т.е. отправить создаваемому процессу сигнал SIGSTOP до исполнения им первой инструкции).
SPAWN_NOZOMBIE
Предотвратить превращение дочернего процесса в зомби-процесс. Информация о возврате или выходе дочернего процесса будет недоступна.
SPAWN_PADDR64_SAFE
Подтвердить безопасность 64-разрядной адресации для выполнения процесса, либо отсутствие значимости местоположения процесса в физической памяти.
SPAWN_SEARCH_PATH
Использовать переменную окружения PATH для поиска исполняемого файла.
SPAWN_SETGROUP
Установить дочернему процессу в качестве ID группы процессов значение из поля pgroup. Если флаг не установлен, дочерний процесс получает значение ID группы процессов вызывающего процесса.
SPAWN_SETND
Породить дочерний процесс на узле, указанном в поле nd.
SPAWN_SETSID
Сделать новый процесс лидером сессии.
SPAWN_SETSIGDEF
Использовать поле sigdefault для указания дочернему процессу набора сигналов по умолчанию. Если не установить этот бит, дочерний процесс наследует настройки сигналов родительского процесса.
SPAWN_SETSIGIGN
Установить для обработки сигналов из поля sigignore значение SIG_IGN.
SPAWN_SETSIGMASK
Использовать поле sigmask для указания дочернему процессу маски сигналов.
SPAWN_SETSTACKMAX
Установить максимальный размер стека равным значению поля stack_max.
SPAWN_TCSETPGROUP
Старт новой группы терминала.
Заголовочный файл <spawn.h> также определяет бит SPAWN_ALIGN_MASK. Это маска для флагов выравнивания, приведённых ниже.
pgroup
Значение ID группы процессов дочернего процесса, если указан бит SPAWN_SETGROUP в поле flags. Если SPAWN_SETGROUP установлен в inherit.flags и в поле inherit.pgroup установлено значение SPAWN_NEWPGROUP, дочерний процесс стартует новую группу процессов, ID новой группы процессов получает значение ID создаваемого процесса.
runmask
Если указан бит SPAWN_EXPLICIT_CPU в поле flags, маска запуска и маска наследования дочернего процесса получает значение из данного поля.
sigmask
Маска сигналов дочернего процесса, если установлен бит SPAWN_SETSIGMASK в поле flags.
sigdefault
Набор сигналов, для которых дочерний процесс получит настройки по умолчанию, если установлен бит SPAWN_SETSIGDEF в поле flags.
sigignore
Набор сигналов, которые дочерний процесс будет игнорировать, если установлен бит SPAWN_SETSIGIGN в поле flags.
stack_max
Максимальный размер стека дочернего процесса, если установлен бит SPAWN_SETSTACKMAX в поле flags.
policy
Политика диспетчеризации дочернего процесса, если установлен бит SPAWN_EXPLICIT_SCHED в поле flags. Политика диспетчеризациии может принимать следующие значения:
SCHED_FIFO
Планировщик с фиксированным приоритетом, в котором готовый поток с наивысшим приоритетом работает до тех пор, пока он не заблокируется или не будет вытеснен потоком с более высоким приоритетом.
SCHED_RR
Аналогично SCHED_FIFO, за исключением того, что потоки с одинаковым уровнем приоритета принудительно вытесняются по исчерпании заданного кванта времени (карусельная диспетчеризация), равного 4 × период системного таймера (системный тик) (см. ClockPeriod()).
SCHED_OTHER
Тоже самое, что и SCHED_RR.
SCHED_SPORADIC
Спорадическая диспетчеризация.
nd
Дескриптор удалённого узла, на котором необходимо породить дочерний процесс. Это поле используется, если установлен бит SPAWN_SETND в поле flags.

Note: При необходимости удалённого использования spawn() необходимо установить в поле nd значение дескриптора узла. Смотрите netmgr_strtond().

param
Параметры диспетчеризации дочернего процесса используются при установке бита SPAWN_EXPLICIT_SCHED в поле flags. Для получения дополнительной информации смотрите документацию для struct sched_param.

Классификация:

ЗОСРВ «Нейтрино»

Тематические ссылки:

spawn(), spawnp()




Предыдущий раздел: Описание API системной библиотеки