Se o shell estiver executando um programa, o shell também receberá um sinal SIGINT quando o Ctrl + C for pressionado?

2

Eu li que quando você pressiona Ctrl+C , então um sinal SIGINT será enviado para o grupo de processos em primeiro plano .

Agora, a resposta aceita nesse pergunta diz:

Basically, your signal is received by all foreground processes, ie the shell and the program,

Eu executei cat dentro de bash e observei que os PGID para bash e cat são diferentes, então eles não pertencem ao mesmo grupo de processos.

Assim, quando você pressionar Ctrl+C , somente cat receberá o sinal SIGINT (e a resposta que citei está errada), estou correto?

    
por Steve 17.05.2017 / 15:24

1 resposta

2

Essa pergunta é sobre um script bash. Você está correndo bash interativamente. Isso faz diferença para grupos de processos: essa é a razão pela qual os grupos de processos foram inventados. A intenção de um grupo de processos é capturar todos os processos envolvidos em uma tarefa iniciada interativamente. Portanto, um shell interativo inicia cada trabalho em um grupo de processos separado, enquanto um shell executando um script não cria novos grupos de processos.

    
por 18.05.2017 / 03:03