Estoy intentando que mi programa se reinicie solo, pero parece que nada funciona. Intenté usar fork()
, pero después de matar el procesoparent
elchild
se mata también.¿Cómo hacer que un programa se reinicie solo? (Proceso de Linux)
CÓDIGO
void sigup_handler(int signum) {
int pid = fork();
if (pid == 0) {
execve("prog2", NULL);
}
else
kill(getpid(), SIGTERM);
}
int main() {
puts("Program 2 started.");
signal(SIGHUP, sigup_handler);
sleep(50);
puts("Program 2 terminated.");
return 0;
}
Genera Programa 2 comenzó. El programa 2 comenzó. con simple execve ("prog2", NULL); Esto me confundió. ¿No debería mostrar "Programa 2 terminado"? – bvk256
Nunca llamará "Programa 2 terminado" porque el padre ya se ha terminado con kill (getpid(), ...); –
Ok, entonces. De todos modos, este mensaje se puede lograr fácilmente ubicándolo en los lugares donde se garantiza que terminará un proceso. – bvk256