First, your question (“Am I in a signal handler?”) Does not have a clearly defined answer. Consider the following code:
#include <setjmp.h>
#include <signal.h>
jmp_buf jb;
int foo(int s)
{
longjmp(jb,1);
}
int main()
{
if (setjmp(jb)) {
puts("Am I in a signal handler now, or not?");
return 0;
}
signal(SIGINT, foo);
raise(SIGINT);
}
, , , . , , sa_mask , , sigaction. sigprocmask , , , ( ).