I have a code that looks like this:
//global variables
void signal_handler() {
//deallocation of global variables
free(foo);
close(foo_2);
exit(0);
}
int main () {
signal(SIGINT, signal_handler);
//irrelevant code
}
As you can see, I changed the CTRL+C
interruption to execute the signal_handler
function once instead of killing the process right away. I read somewhere that some functions like might be free
are not async-safe and would NOT execute in the signal_handler
but I'm not sure about that.
Can I execute functions like free
, close
, exit
or even pthread_join
in a signal handler?