Se você quiser eliminar o processo do shell e qualquer outro processo gerado, provavelmente é melhor iniciar um novo grupo de processos ( setpgid()
no filho após o fork()
antes de executar o execve()
no script) e mate o grupo de processos com kill(-pid)
, em que pid
é o valor de retorno de fork()
no pai.
Se chamar setpgid()
não for uma opção, você ainda pode fazer isso:
Em vez de:
run("your-script its args");
Faça:
run("set -m; trap 'kill %' TERM; your-script its args & wait")