манипулаторът за SIGALRM не работи

Аз съм на задача.

Заданието създава виртуална операционна система в реално време на Linux система (на Ubuntu).

Проблемът ми е SIGALRM и това е манипулатор за Scheduler.

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();
}

Функционалният планировчик (манипулатор) не работи. alarm(1) работи, но току-що е на пауза след alarm(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
Разбрах Clear. Грешката е моя. Аргументът на функцията sleep е дефиниран погрешно. - person Answer; 29.11.2015