Прерывание функции с последующим продолжением её выполнения - C (СИ)

Формулировка задачи:

Доброго времени суток! Имеется некая функция, которая представляет из себя бесконечный цикл(например печатает "1", затем "2", затем "3"). Необходимо при нажатии определенной комбинации клавиш приостановить её выполнение, вызвать другую функцию и при её завершении продолжить цикл. Пытался использовать функцию SIGNAL(SIGINT,&SecontFunc). При вызове сигнала(CTRL-C) необходимая функция вызывалась, однако после её выполнения программа завершала свою работу. Буду рад, если подскажите какие-либо идеи. Заранее спасибо.

Код к задаче: «Прерывание функции с последующим продолжением её выполнения - C (СИ)»

textual
#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


СОХРАНИТЬ ССЫЛКУ