O que é pgrp neste contexto?

2

Citado de aqui .

gdb puts the debugged process in its own pgrp and sets the terminal to that pgrp. (Try e.g. ps j on the PIDs of gdb and your program being debugged.)

E o que isso significa por

ps j on the PIDs of gdb and your program being debugged

isso significa ps j PID ?

Eu não recebo nada especial disso ...

Basicamente eu não entendo o que esse artigo está falando, alguém pode explicar isso em maiores detalhes?

    
por locale 10.06.2011 / 08:29

1 resposta

2

Um "pgrp" é um grupo de processos . ps j lista o ID do grupo de processos (a coluna é chamada PGID ). O PGID de um processo geralmente é em si ou o grupo de processos de seus pais, mas pode ser arbitrariamente definido com setpgid() . Grupos de processos controlam quais processos recebem sinais de controle de trabalho. Eu acho que o gdb move o processo para o seu próprio grupo, de modo a evitar que o processo receba sinais de controle de trabalho que poderiam atrapalhar o controle do gdb sobre o processo.

O relatório de erros é sobre o uso do gdb com um programa que usa sigwait . sigwait permite que um processo receba um sinal de maneira incorreta: em vez de ser entregue ao processo da maneira usual, o sinal é removido da fila pendente e sigwait retorna. Isso é útil principalmente para que um sinal seja sempre entregue a um segmento específico: bloqueie o sinal, mas faça com que um segmento o consuma executando sigwait .

Como o sinal não é realmente entregue ao processo, ptrace não vê nada e, portanto, o gdb não é notificado de que o processo consumiu o sinal por engano.

O debate no relatório de erros é sobre se o kernel deve ser modificado para que ptrace veja algo quando o sinal é consumido através de sigwait , ou se o gdb deve lidar com essa situação de forma diferente. Eu não sei o suficiente sobre isso para tomar partido.

    
por 10.06.2011 / 09:37

Tags