Идея обходного пути: если существует только небольшое количество мест, которые могут вызвать обработчик сигнала, или вас интересует только, в каком большем блоке это произошло, вы можете сохранить это в переменной.

(64-битной или 32-битной) Linux - например:

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
    ...
}

В signal_handler, как мы можем узнать, что мы прерваны в printf в main ()?

Ответы на вопрос(4)

Ваш ответ на вопрос