Um processo filho herda qualquer nice
valor mantido pelo pai no momento em que é bifurcado (no seu exemplo 5
).
No entanto, se o nice
valor do processo pai for alterado após bifurcar os processos filhos, os processos filhos não herdarão o novo nice
valor.
Você pode observar isso facilmente com a ferramenta de monitoramento top
. Se o nice
campo (NI) não for mostrado por padrão, você poderá adicioná-lo pressionando f
e escolhendo I
. Isso adicionará a NI
coluna à top
exibição.
* 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
Boas informações de man 2 fork
fork () cria um novo processo duplicando o processo de chamada. O novo processo, chamado de filho, é uma duplicata exata do processo de chamada, chamado de pai, exceto pelos seguintes pontos:
- O filho tem seu próprio ID de processo exclusivo e esse PID não corresponde ao ID de nenhum grupo de processos existente (setpgid (2)).
- O ID do processo pai da criança é o mesmo que o ID do processo pai.
- O filho não herda os bloqueios de memória de seus pais (mlock (2), mlockall (2)).
- As utilizações de recursos do processo (getrusage (2)) e os contadores de tempo da CPU (vezes (2)) são redefinidos para zero no filho.
- O conjunto de sinais pendentes da criança está inicialmente vazio (sigpending (2)).
- A criança não herda ajustes de semáforo de seu pai (semop (2)).
- O filho não herda bloqueios de registro de seu pai (fcntl (2)).
- O filho não herda os cronômetros de seu pai (setitimer (2), alarme (2), timer_create (2)).
- O filho não herda operações de E / S assíncronas pendentes de seu pai (aio_read (3), aio_write (3)), nem herda contextos de E / S assíncrona de seu pai (consulte io_setup (2)).
fork
implementação sensata .