Das Programm, das ich habe, ist wie folgt:Ist es für ein Programm möglich, SIGTERM zu erfassen, das vom Systemaufruf exit generiert wurde?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <signal.h>
int main()
{
struct sigaction new_sa;
struct sigaction old_sa;
sigfillset(&new_sa.sa_mask);
new_sa.sa_handler = SIG_IGN;
new_sa.sa_flags = 0;
int input;
if (sigaction(SIGTERM, &new_sa, &old_sa) == 0 && old_sa.sa_handler != SIG_IGN) {
new_sa.sa_handler = NULL;
sigaction(SIGTERM, &new_sa, 0);
}
printf("Pgm is running\n");
while (1) {
printf("Enter input\n");
scanf("%d", &input);
if (!input) {
/* I actually call a libraries API which calls exit()
* Just calling exit here for simpilicity */
exit(1);
}
}
}
ich behandeln möchten/ignorieren SIGTERM durch Exit Systemaufruf erzeugt. Ist es möglich? Es gibt keine Möglichkeit für mich, den Aufruf von exit zu vermeiden, da es sich tatsächlich um einen Bibliotheksaufruf handelt, der versucht, das Programm zu beenden, das ich vermeiden möchte.
Sind Sie sicher, dass 'exit' ein SIGTERM-Signal sendet? Davon habe ich noch nie gehört und in gdb läuft kein 'SIGTERM' auf 'exit'. – kaylum
Ja .. sieht aus wie du hast Recht. Es sendet kein SIGTERM. – Nikhil