обработчик для SIGALRM не работает

Я на задании.

Задание заключается в создании виртуальной операционной системы реального времени в системе Linux (на Ubuntu).

Моя проблема SIGALRM и это обработчик планировщика.

void scheduler(int signo) {
        /*variables */
        printf("Scheduler awake!!\n");
        /* Do
           Schedule */
}

int RunScheduler(void) {
        signal(SIGALRM, scheduler);
        alarm(1);
        while(1)
                pause();
        return 0;
}

int main() {
        RunScheduler();
}

Функция планировщика(обработчика) не работает. будильник (1) работает, но просто приостанавливается после будильника (1).

Есть ли причина, по которой обработчик сигналов не работает??


person Answer    schedule 29.11.2015    source источник


Ответы (1)


Тот же самый код работает правильно на моей машине.

Я использовал компилятор gcc, который поставляется в комплекте с Ubuntu. Вы используете тот же компилятор?

person adit-39    schedule 29.11.2015
comment
Да, используйте gcc с Ubuntu - person Answer; 29.11.2015
comment
Я думаю, что пауза внутри цикла может вызывать изменения в поведении. Попробуйте запустить код без этой паузы (поскольку вы все равно находитесь в бесконечном цикле). Если это не сработает, используйте sigaction вместо signal. - person adit-39; 29.11.2015
comment
Я получил Клир. Это моя ошибка. Аргумент функции sleep определен неверно. - person Answer; 29.11.2015