Se você fizer isso em C, precisará fazer um setsid(2)
em seu código, além de algumas fork()
e exit()
chamadas. setsid()
tem esse efeito:
... creates a new session if the calling process is not a process group leader. The calling process is the leader of the new session, the process group leader of the new process group, and has no controlling tty.
Isso é da página man. Basicamente, se um processo que é um líder de grupo de processos recebe certos sinais, cada ID de processo nesse grupo de processos recebe o sinal. Você pode ver o mecanismo para isso na página kill(2)
man. Se o PID que você chamar kill()
on for negativo, o sinal será enviado para todos os processos no grupo de processos.
Você também precisa fork()
e exit()
nos lugares certos. Basicamente, observe as instruções sobre como se tornar um processo daemon . As partes que você precisa fazer:
switch (fork()) {
case -1: return -1;
case 0: break;
default: _exit(EXIT_SUCCESS);
}
setsid();
switch (fork()) {
case -1: return -1;
case 0: break;
default: _exit(EXIT_SUCCESS);
}
Leia sobre como se tornar um processo daemon para mais das razões por trás desse código.