Quando grupos de processos são geralmente criados?

4

Eu tenho um programa que gera muitas instâncias de outros programas. Eu quero ter uma maneira limpa de matá-los após o tempo limite, mesmo que eles gerem subprocessos, às vezes acidentalmente daemonize, etc.

Agora eu uso a abordagem de grupos de processos: cada instância é executada em seu próprio grupo de processos e eu sinalizo o grupo inteiro quando quero matá-lo. E parece funcionar bem até agora.

No entanto, é muito fácil criar um novo grupo de processos e assim escapar do meu controle. Esses programas não são intrinsecamente maliciosos (então eles não tentam fazer isso de propósito), mas podem ser muito mal escritos. Eles podem ser scripts Python, scripts de shell feios, coisas assim.

Então, minha pergunta é, quando grupos de processos são geralmente criados? De acordo com minhas observações, os shells interativos os criam, mas os não-interativos não. Por exemplo, eles são algum tipo de construção de shell avançada que tendem a criar novos grupos de processos, mesmo em scripts não interativos?

    
por WGH 31.08.2016 / 23:07

1 resposta

2

Bem, "às vezes acidentalmente daemonize" seria um problema - parte da daemonizing é desassociar do grupo de processos. Veja, por exemplo, página de Daemonize ou FAQ sobre programação de UNIX .

Além disso, o que eu encontrei [*] é script , que às vezes você tem que usar para capturar a saída de um comando (por exemplo, porque ele se comporta de maneira diferente quando conectado a um terminal versus um pipe) . script chamadas setsid , que também inicia um grupo de processos.

Também é possível ativar o controle de tarefas dentro de um script, o que provavelmente também o faria. Não tenho certeza de quão comum isso é, no entanto.

[*] Eu pessoalmente tenho um script que uso com frequência que executa mpv dentro de um script e analisa a saída.

    
por 01.09.2016 / 00:30