µ÷Óà alarm£¬ËüÔÚÖ¸¶¨³¬Ê±ÆÚÂúʱ²úÉúSIGALRMÐźš£Õâ¸ö·½·¨Éæ¼°ÐźŴ¦Àí¡£
Ó÷¨£º
alarm(time):TIME¾ÍÊÇÖ¸¶¨µÄ³¬Ê±ÆÚ£»Èç¹û֮ǰÉèÓг¬Ê±ÆÚ£¬alarm()»á·µ»ØÆäʱÆÚµÄÊ£ÓàÖµ£»
signal(SIGALARM, connect_alarm):Ö¸¶¨connect_alarmº¯ÊýÊÇʱÖÓÆÚÂúʱµÄ´¦Àíº¯Êý£»
º¯ÊýÍ˳öǰҪ¹Ø±ÕʱÖÓ£º
Sigfunc *sigfunc;
sigfunc=signal(SIGALARM, connect_alarm);//±£´æÐźÅSIGALARMµÄÔʼ´¦Àíº¯Êý
alarm(0);//¹Ø±ÕʱÖÓ
signal(SIGALARM, sigfunc);//»Ö¸´SIGALARMÐźŵÄÔʼ´¦Àíº¯Êý
Ñ»·¿ªÆôÄÖÖӺ͹رÕÄÖÖÓ£º
Sigfunc *sigfunc;
sigfunc=signal(SIGALARM, connect_alarm);
alarm(2);//ÒÔÉÏÊÇ¿ªÄÖÖÓ
for(;;){
if(A==terminate clock forerver){
alarm(0);
signal(SIGALARM, sigfunc);
}else if(B==turn up the clock again){
alarm(0);
sigfunc=signal(SIGALARM, connect_alarm);
alarm(2);
}else
do noting....
}
Èç¹û·ûºÏÌõ¼þBµÄ»°£¬ÄÖÖÓÒªÖØÐ¿ªÆô£¬ÕâÀïÒªÏȹØÁË£¬ÔÙÖØÐÂÉèÖÃÄãÆÚÍûµÄ´¦Àíº¯Êý£¬È»ºóÔÙÉ趨ʱ¼ä¡£Èç¹û¹âÊǼòµ¥µÄÖØÐÂÉ趨ʱ¼äµÄ»°£¬³ÌÐòÔÙÐÂÄÖÖÓ³¬Ê±Ê±»áÖ±½ÓÌø³öforÑ»·£¬½áÊø³ÌÐò¡£ÒòΪÕâÊÇĬÈÏ´¦Àíº¯Êý£¬Èç¹ûÄãÖØÉèÖÃÄÖÖÓʱ²»¸øÓè×Ô¶¨ÒåµÄ´¦Àíº¯Êý£¬»áÖ±½ÓÍ˳öº¯Êý£¬ºó¹û²»¿É¹À¼ÆµÄ¡£