Привет
у следующая проблема - я хочу изменить выполнение программы по какому-нибуть событию (передаеться через сигнал) таким образом чтоб сама программа *СРАЗУ* прервалась и выполнила нужную функцыю. Вопрос: как это реализовать? Проблема состоит в том что выполнение долгих функцый (таких как speep(X)) в *САМОМ* signal-handlere не допустимо.
пример программы:
void my_signalhandler(int s){ KEEP_RUNNUNG=0; }
... while( KEEP_RUNNING ){ /* main loop */ do_something(); /* функция блокируется на ... неопределенное время */ } do_when_signal_comes();/* должно быть запущено по сигналу и требует длительного времени выполнения*/ ...
В этом примере проблема состоит в том что выполнение программы прерывается не после сигнала (и вызова handlera), а только после проверки KEEP_RUNNING в главном цыкле. Существуют ли какие либо методы асинхронного прерывания программы? Или может ктонибуть посоветоваеть что нибуть еще, Всем заранее благодарен!