1
我在作業上。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)後暫停。
是否有任何理由信號處理程序不起作用?
Yeap,使用與Ubuntu的gcc – Answer
我認爲循環內的暫停可能會導致行爲的變化。嘗試在沒有停頓的情況下運行代碼(因爲您無論在無限循環內)。如果這不起作用,請使用sigaction而不是signal。 –
謝謝你的建議。我會盡力。 – Answer