Прерывание функции с последующим продолжением её выполнения - C (СИ)
Формулировка задачи:
Доброго времени суток!
Имеется некая функция, которая представляет из себя бесконечный цикл(например печатает "1", затем "2", затем "3"). Необходимо при нажатии определенной комбинации клавиш приостановить её выполнение, вызвать другую функцию и при её завершении продолжить цикл.
Пытался использовать функцию SIGNAL(SIGINT,&SecontFunc). При вызове сигнала(CTRL-C) необходимая функция вызывалась, однако после её выполнения программа завершала свою работу.
Буду рад, если подскажите какие-либо идеи. Заранее спасибо.
Код к задаче: «Прерывание функции с последующим продолжением её выполнения - C (СИ)»
#include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> void int_handler(int n) { char buf[32]; printf("\nRealy stop? "); scanf("%31s", buf); if ( *buf == 'y' || *buf == 'Y' ) exit(0); else raise(SIGCONT); } int main(void) { int b = 99; if ( signal(SIGINT, int_handler) == SIG_ERR ) { fprintf(stderr, "Can't set up interrupt handler!\n"); exit(1); } while ( 1 ) { if ( b ) { printf("%d bottles of beer on the wall, %d bottles of beer...\n", b, b); b -= 1; printf("Take one down and pass it around, %d bottles of beer on the wall.\n\n", b); } else { printf("No more bottles of beer on the wall, no more bottles of beer...\n"); b = 99; printf("Go to the store and buy some more, %d bottles of beer on the wall.\n\n", b); } usleep(500000); } exit(0); }
8 голосов, оценка 3.625 из 5
СОХРАНИТЬ ССЫЛКУ