Diferença entre grupo de processos e job?

6

Qual é a diferença entre um grupo de processos e um trabalho? Se eu digitar pr * | lpr , será um grupo de processos e também um trabalho? Qual é exatamente a diferença entre um ID de grupo de processos e um ID de trabalho?

Edit: Eu sei que parece semelhante a Qual é a diferença entre um trabalho e um processo? , mas é um pouco diferente. Além disso, não entendi esse conceito desse segmento.

    
por Naruto Uzumaki 11.03.2011 / 16:42

1 resposta

6

Um grupo de processos é um conceito de kernel unix. Não aparece com muita frequência. Você pode enviar um sinal para todos os processos em um grupo, chamando a kill chamada de sistema ou utilitário com um argumento negativo.

Quando um processo é criado (com fork ), ele permanece no mesmo grupo de processos como pai. Um processo pode ser movido para outro grupo chamando setpgid ou setpgrp . Isso é normalmente executado pelo shell quando inicia um processo externo, antes de ser executado execve para carregar o programa externo.

O principal uso para grupos de processos é que quando você pressiona Ctrl+C , Ctrl+Z ou Ctrl+\ para matar ou suspender programas em um terminal , o terminal envia um sinal para todo um grupo de processos , o grupo de processos em primeiro plano . Os detalhes são bastante complexos e principalmente de interesse para implementadores de shell ou kernel; o capítulo General Terminal Interface do padrão POSIX é uma boa apresentação (você precisa de alguma programação unix fundo).

Jobs são um conceito interno para o shell. Nos casos simples, cada trabalho em um shell corresponde a um grupo de processos no kernel.

    
por 12.03.2011 / 17:19