First code (minimized case):
#include <stdio.h>
#include <signal.h>
int counter = 0;
void react_to_signal(int n) {
fprintf(stderr, "Caught!\n");
counter++;
}
int main(int argc, char** argv) {
signal(SIGINFO, react_to_signal);
while (1) {
printf("%d\n", counter);
}
return 0;
}
I run the code, it loops, as you would expect, by printing 0. Then in another shell.
kill -s SIGINFO <pid_of_my_process>
The signal is delivered, cincreased, but fprintfdoes not occur.
Why is this so? In what environment / context does the handler code execute? Where can I read this?
source
share