为什么条件变量等待时需要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;
}

  

 

posted @ 2020-05-18 16:56  Kasper  阅读(676)  评论(0编辑  收藏  举报