#include
#include
void handler(int signo)
{
printf(\"Into handler\\n\");
while(1);
}
int main()
{
struct sigaction act;
What you are doing seems like a very bad idea, though, and it might be better to simply set a flag from the handler and return from it, and then do the printing from main.
You need to set SA_NODEFER
or otherwise re-enable the signal within the signal handler itself because otherwise the signal gets blocked or switched back to its default behavior right before the call to the handler.
Calling printf
from a signal handler is undefined behavior. It may crash your program. The list of functions that you actually can safely call from a signal handler is very limited. I need a list of Async-Signal-Safe Functions from glibc