Existe uma maneira de alterar o grupo de processos de um processo em execução?

2

Existe uma maneira de alterar o PID, o PPID, o SID de um processo em execução? Faz sentido que a resposta seja não, mas gostaria de ter certeza.

    
por extremeaxe5 13.08.2018 / 01:06

1 resposta

2

Um processo pode definir seu próprio PGID e SID com as chamadas do sistema setpgid < href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/setsid.html"> setsid . O grupo / sessão alvo não pode ser escolhido arbitrariamente: setpgid só pode mover para outro grupo de processos na mesma sessão ou criar um novo grupo de processos cujo PGID é igual ao PID; setsid só pode mover o processo para sua própria sessão, tornando o SID igual ao PID.

Essas chamadas são reservadas para o processo em si: um processo não pode alterar o PGID ou SID de outro processo, com uma exceção: um processo pode alterar o PGID de seus filhos se eles ainda estiverem executando a imagem do processo original execve para executar um programa diferente).

Alguns sistemas podem permitir outros comportamentos, mas eu não acho que nenhum sistema Unix moderno se desvie fundamentalmente.

É possível alterar indiretamente o PGID ou SID de um processo usando um depurador para fazer o processo chamar a chamada de sistema setpgid ou setsid (via ptrace ). Como isso requer a permissão ptrace , deve ser feito a partir de outro processo rodando como root ou como o mesmo usuário, e não deve haver nenhuma restrição na depuração (muitos sistemas Linux modernos requerem que o depurador seja um ancestral do debuggee).

O PID de um processo nunca muda. O PPID de um processo só pode mudar uma vez, e apenas por um motivo: quando o pai morre, o PPID muda do PID do pai para 1 (o processo é adotado por init ).

Note que em alguns sistemas, um processo pode ter diferentes valores de PID (e consequentemente também PPID / PGID / SID, já que todos eles iniciam como o PID de algum processo) dependendo de como você o observa. Por exemplo, com namespaces do Linux, cada processo tem um PID potencialmente diferente em cada espaço de nomes onde ele é visível.

    
por 13.08.2018 / 01:22