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