1 /* Example of a bad call within a signal handler. 2 'handler' calls 'custom_logger' which calls 'fprintf', and 'fprintf' is 3 not allowed from a signal handler. */ 4 5 #include <stdio.h> 6 #include <signal.h> 7 8 extern void body_of_program(void); 9 10 int logging = 1; 11 custom_logger(const char * msg)12void custom_logger(const char *msg) 13 { 14 if (logging) 15 fprintf(stderr, "LOG: %s", msg); /* { dg-warning "call to 'fprintf' from within signal handler" } */ 16 } 17 handler(int signum)18static void handler(int signum) 19 { 20 custom_logger("got signal"); 21 } 22 main(int argc,const char * argv)23int main(int argc, const char *argv) 24 { 25 custom_logger("started"); 26 27 signal(SIGINT, handler); /* { dg-message "registering 'handler' as signal handler" } */ 28 29 body_of_program(); 30 31 custom_logger("stopped"); 32 33 return 0; 34 } 35