In a signal handler, how to know where the program is interrupted?

Viewed 3316

On x86 (either 64-bit or 32-bit) Linux -- for example:

void signal_handler(int) {
   // want to know where the program is interrupted ...
}

int main() {
    ...
    signal(SIGALRM, signal_handler);
    alarm(5);
    ...
    printf(...); <------- at this point, we trigger signal_handler
    ...
}

In signal_handler, how can we know we are interrupted at printf in main()?

4 Answers
Related