这是我正在学习的考试的示例问题 - 问题是代码有什么问题。我在想可能是警报(3),导致它跳入while循环的延迟?或者可能不应该使用 SIGALRM 从睡眠中醒来,但我认为这不是一个有效的观点。任何反馈表示赞赏,我发现很难找到与这类东西相关的相关信息。
static void foo(int signo) {
printf("Nudge-nudge\n");
alarm(3);
}
int main() {
sigset_t set;
sigemptyset(&set);
sigset(SIGALRM, foo);
alarm(3);
while (1) {
sigsuspend(&set);
}
return (0);
}