wenn i Neustart-Befehl ausgeben, erhalte ich die NachrichtWie kann ich registrieren und Linux-Neustart-Signal behandeln?
Neustart
.... .... das System nun für den Neustart nach unten geht! INIT: Prozesse des TERM-Signal gesendet ....
Deshalb "init" TERM an alle Prozesse sendet und i registriert TERM folgend
void sig_handler(int signum, siginfo_t *siginfo, void *ctx)
{
printf("!!! sig_handler: signum: %d\n", signum);
if (signum == SIGTERM && (long) siginfo->si_pid == 1)
{
printf("!!! sig_handler: send by init-process\n");
}
exit(signum);
}
void sig_handler_reg(int signum)
{
struct sigaction act;
memset(&act, '\0', sizeof(act));
act.sa_sigaction = sig_handler;
act.sa_flags = SA_SIGINFO;
sigaction(signum, &act, NULL);
printf("!!! sig_handler_reg: signum %d registered\n", signum);
}
i den Befehl auf der Kommandozeile ausgeben
pkill my_process
und ich erhalte die Nachricht
!!! sig_handler: signum: 15
Ausgabe i den Befehl auf der Kommandozeile
Neustart
und ich bekomme keine Meldung von sig_handler und das System neu startet
Was ist falsch?
jeden Hinweis geschätzt
Dank für Ihre Antwort. Der Elternteil meines Prozesses ist init, weil ich meinen Prozess in /etc/init.d/rc.local gestartet habe – elvis61
was meinst du? Wie kann ich beim Neustart auslösen? – elvis61