Дочерний процесс наследует любое nice
значение, хранящееся у родителя во время его разветвления (в вашем примере, 5
).
Однако, если nice
значение родительского процесса изменяется после разветвления дочерних процессов, дочерние процессы не наследуют новое nice
значение.
Вы можете легко наблюдать это с помощью инструмента мониторинга top
. Если nice
поле (NI) не отображается по умолчанию, вы можете добавить его, нажав f
и выбрав I
. Это добавит NI
столбец на top
дисплей.
* I: NI = Nice value
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1937 root 20 0 206m 66m 45m S 6.2 1.7 11:03.67 X
Хорошая информация от man 2 fork
fork () создает новый процесс, дублируя вызывающий процесс. Новый процесс, называемый дочерним, является точной копией вызывающего процесса, называемого родительским, за исключением следующих пунктов:
- У дочернего элемента есть собственный уникальный идентификатор процесса, и этот PID не совпадает с идентификатором какой-либо существующей группы процессов (setpgid (2)).
- Идентификатор родительского процесса дочернего процесса совпадает с идентификатором родительского процесса.
- Ребенок не наследует блокировки памяти своего родителя (mlock (2), mlockall (2)).
- Использование ресурсов процесса (getrusage (2)) и счетчики времени процессора (times (2)) сбрасываются на ноль в дочернем процессоре.
- Дочерний набор ожидающих сигналов изначально пуст (sigpending (2)).
- Дочерний объект не наследует настройки семафора от своего родителя (semop (2)).
- Дочерний объект не наследует блокировки записей от своего родителя (fcntl (2)).
- Дочерний объект не наследует таймеры от своего родителя (setitimer (2), alarm (2), timer_create (2)).
- Дочерний объект не наследует невыполненные асинхронные операции ввода-вывода от своего родителя (aio_read (3), aio_write (3)), а также не наследует какие-либо контексты асинхронного ввода-вывода от своего родителя (см. Io_setup (2)).
fork
реализации.