Com qual grupo de processos meu programa pertence quando iniciado a partir do bash?

1

Se eu executar um programa a partir de bash , meu programa pertencerá ao mesmo grupo de processos que o shell ou pertencerá a um novo grupo de processos?

Como estou criando um shell em C , preciso manipular o sinal SIGINT .

Agora, a tecla Ctrl + C envia um sinal SIGINT para os processos no primeiro plano, mas que pertencem ao mesmo grupo de processos.

Não consigo terminar a sessão bash.

    
por Kalu 11.08.2015 / 09:31

1 resposta

3

bash-4.3$ ps -j | cat
  PID  PGID   SID TTY          TIME CMD
 4586  4586  4586 pts/1    00:00:00 bash
 4600  4600  4586 pts/1    00:00:00 ps
 4601  4600  4586 pts/1    00:00:00 cat
bash-4.3$ ps -j; ps -j
  PID  PGID   SID TTY          TIME CMD
 4586  4586  4586 pts/1    00:00:00 bash
 4602  4602  4586 pts/1    00:00:00 ps
  PID  PGID   SID TTY          TIME CMD
 4586  4586  4586 pts/1    00:00:00 bash
 4603  4603  4586 pts/1    00:00:00 ps

Um job de shell interativo é implementado com um grupo de processos. É para isso que grupos de processos foram criados para: executar tarefas de shell interativas. Os shells interativos são os únicos comandos que realmente se misturam aos grupos de processos.

Acima de ps -j | cat é um trabalho (em primeiro plano). Tanto ps como cat estão no mesmo grupo de processos, o shell fez dele o grupo de processos em primeiro plano do terminal, de forma que um ^C faça com que um SIGINT seja enviado para eles.

No segundo exemplo, dois trabalhos consecutivos.

Em

bash-4.3$ (ps -j; ps -j)
  PID  PGID   SID TTY          TIME CMD
 4586  4586  4586 pts/1    00:00:00 bash
 4633  4633  4586 pts/1    00:00:00 bash
 4634  4633  4586 pts/1    00:00:00 ps
  PID  PGID   SID TTY          TIME CMD
 4586  4586  4586 pts/1    00:00:00 bash
 4633  4633  4586 pts/1    00:00:00 bash
 4635  4633  4586 pts/1    00:00:00 ps

O subshell é um trabalho. O subshell em si pode ser visto como um shell não interativo.

    
por 11.08.2015 / 09:45