Il programma che ho è la seguente:È possibile che un programma acquisisca SIGTERM generato dalla chiamata di sistema di uscita?
#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);
}
}
}
voglio gestire/ignorare SIGTERM generato dalla chiamata di sistema di uscita. È possibile? Non c'è modo per me di evitare di chiamare exit poiché in realtà è una chiamata alla libreria che sta cercando di uscire dal programma che voglio evitare.
Sei sicuro che 'exit' invia un segnale SIGTERM? Non ne ho mai sentito parlare prima e nell'esecuzione in gdb non mostra un SIGTERM su 'exit'. – kaylum
Sì, sembra che tu abbia ragione. Non sta inviando SIGTERM. – Nikhil