Sto cercando di riavviare il mio programma, ma niente sembra funzionare. Ho provato a utilizzare fork()
, ma dopo aver ucciso ilparent
processo ilchild
viene ucciso anche.Come fare un programma per riavviarsi da solo? (Processo Linux)
CODICE
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;
}
Produce programma 2 iniziato. Il programma 2 è iniziato. con execve semplice ("prog2", NULL); Questo mi ha confuso. Non dovrebbe visualizzare "Programma 2 terminato"? – bvk256
Non chiamerà mai "Programma 2 terminato" perché il genitore ha già terminato se stesso con kill (getpid(), ...); –
Ok, allora. In ogni caso questo messaggio è facilmente ottenibile posizionandolo nei luoghi in cui è garantito il completamento di un processo. – bvk256