为什么条件变量等待时需要while循环
“发生信号时将唤醒由于调用sleep函数而进入阻塞状态的进程。”
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
void timeout(int sig)
{
if(sig == SIGALRM)
puts("time out");
alarm(2);
}
void keycontrol(int sig)
{
if(sig == SIGINT){
puts("ctrl + c");
}
}
int main(int argc,char *argcv)
{
int i;
signal(SIGALRM,timeout);
signal(SIGINT, keycontrol);
alarm(2);
for(int i = 0;i<3;i++)
{
puts("waits...");
sleep(100);
}
return 0;
}

浙公网安备 33010602011771号