Структура, характеризующая какие параметры наследуются процессом от родителя
#include <spawn.h>
typedef struct inheritance {
unsigned long flags;
pid_t pgroup;
sigset_t sigmask;
sigset_t sigdefault;
sigset_t sigignore;
unsigned long stack_max;
#if __INT_BITS__ != 32
long policy;
#else
int policy;
#endif
_Uint32t nd;
_Uint32t runmask;
struct sched_param param;
} 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.
| При необходимости удалённого использования spawn() необходимо установить в поле nd значение дескриптора узла. Смотрите netmgr_strtond(). |
- param
- Параметры диспетчеризации дочернего процесса используются при установке бита
SPAWN_EXPLICIT_SCHED
в поле flags. Для получения дополнительной информации смотрите документацию для struct sched_param.
ЗОСРВ «Нейтрино»
spawn(), spawnp()
Предыдущий раздел: Описание API системной библиотеки