I decisively conclude that Shell's process group ID = foreground job process group ID from the 2 sources below.
Você não deveria, já que nenhuma das fontes citadas afirmam que o PGID do shell é igual ao PGID do job em primeiro plano.
O PGID do shell não é alterado. Em um cenário normal com um shell interativo em execução em um terminal, o shell está em seu próprio grupo de processos e o PGID do shell é igual ao PID do shell.
Cada processo tem um PGID. O terminal tem um código de grupo do processo de primeiro plano associado . O grupo de processos em primeiro plano é, por definição, o grupo de processos com esse PGID.
Observe que, se o terminal for fornecido por um emulador de terminal, não haverá relação entre isso e o PID do emulador de terminal. Isso deve ser óbvio se você pensar em terminais de hardware, fornecidos inteiramente pelo kernel: não há nenhum processo de emulador de terminal nessa situação.
O PGID associado ao terminal pode ser definido pela função tcsetpgrp
, que é chamada pelo shell quando inicia um programa externo em primeiro plano ou move um trabalho para o primeiro plano com fg
.