ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

LinuxÖеÄsleepºÍalarmÔÚÑÓʱ×÷ÓÃÖеÄÇø±ðºÍÁªÏµ
2014-11-24 07:34:48 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:1´Î
Tags£ºLinux sleep alarm ÑÓʱ ×÷ÓÃ Çø±ð ÁªÏµ

sleepº¯Êý£º


#include
unsigned int sleep(unsigned int seconds);


´Ëº¯Êýʹµ÷Óýø³Ì±»¹ÒÆð£¬Ö±µ½Âú×ãÒÔÏÂÌõ¼þÖ®Ò»£º
1)ÒѾ­¹ýÁËsecondsËùÖ¸¶¨µÄǽÉÏʱÖÓʱ¼ä
2)µ÷Óýø³Ì²¶×½µ½Ò»¸öÐźŲ¢´ÓÐźŴ¦Àí³ÌÐò·µ»Ø
×¢£ºÓÉÓÚÆäËûϵͳ»î¶¯£¬Êµ¼Ê·µ»ØÊ±¼ä±ÈËùÒªÇóµÄ»á³ÙһЩ£¬ÏñalarmÒ»Ñù¡£


sleepµÄ·µ»ØÖµ£º
1)ÔÚÉÏÊöµÚÒ»ÖÖÇéÐÎÖУ¬·µ»ØÖµÊÇ0
2)µ±ÓÉÓÚ²¶×½µ½Ä³¸öÐźÅsleepÌáǰ·µ»ØÊ±£¬·µ»ØÖµÊÇδ˯¹»µÄʱ¼ä(ËùÒªÇóµÄʱ¼ä¼õȥʵ¼ÊÐÝÃßʱ¼ä)



¿´¿´ÏÂÃæµÄÀý×Ó£¬²Â²Âsleep()µÄ·µ»ØÖµÊǶàÉÙ
1 #include
2 #include
3 #include
4
5 #define DIAPAUSE 30 //sleep time 30s
6 #define TIMEOUT 5
7
8 void sigalrm(int signo);
9
10 int main()
11 {
12 struct sigaction sa;
13
14 sa.sa_handler = sigalrm;
15 sa.sa_flags = 0;
16 sigemptyset(&sa.sa_mask);
17 if(sigaction(SIGALRM, &sa, NULL) < 0)
18 {
19 printf("sigaction error!\n");
20 return;
21 }
22
23 while(1)
24 {
25 printf("alarm(TIMEOUT)...\n");
26 alarm(TIMEOUT);
27 printf("...\n");
28 printf("sleep(DIAPAUSE) == %d\n", sleep(DIAPAUSE));
29 }
30
31 return 0;
32 }
33
34 void sigalrm(int signo)
35 {
36 printf("timeout...\n");
37 return;
38 }


sleepº¯ÊýµÄ·µ»ØÖµÊÇ25¡£


Èç¹û½«TIMEOUTµÄÖµ¸ÄΪ´óÓÚDIAPAUSEµÄÖµ£¬Èç50µÄ»°£¬sleepº¯ÊýÔÚ˯¹»ÁËDIAPAUSEºó¾Í»á·µ»Ø£¬·µ»ØÖµÎª0¡£


Èç¹ûÎÒÃǼ´ÐèÒªalarmÓÖÐèÒªsleepÒ»¸öÔ¤¶©µÄʼþÔõô°ì£¿ÈçÉÏÃæµÄÀý×Ó£¬ÎÒÏëÔÚ...ºóÔÙsleep 30sÈ»ºóÔÙ½øÈëÑ­»·¡£ÕâÔÚsocketͨѶ¹ý³ÌÖУ¬ÔÚÉèÖó¬Ê±µÄʱºò¿ÉÄÜ»áÓõ½¡£


×¢Òâµ½alarmº¯Êý¡£
#include
unsigned int alarm(unsigned int senconds);
ʹÓÃalarmº¯Êý¿ÉÒÔÉèÖÃÒ»¸ö¼ÆÊ±Æ÷£¬ÔÚ½«À´Ä³¸öÖ¸¶¨µÄʱ¼ä¸Ã¼ÆÊ±Æ÷»á³¬Ê±¡£µ±¼ÆÊ±Æ÷³¬Ê±Ê±£¬²úÉúSIGALARMÐźš£Èç¹û²»²¶×½»ò²»ºöÂÔ´ËÐźţ¬ÔòÆäĬÈ϶¯×÷ÊÇÖÕÖ¹µ÷ÓøÃalarmº¯ÊýµÄ½ø³Ì¡£


ÿ¸ö½ø³ÌÖ»ÄÜÓÐÒ»¸öÄÖÖÓʱÖÓ£¬Èç¹ûÔÚµ÷ÓÃalarmʱ£¬ÒѾ­Îª¸Ã½ø³ÌÉèÖùýÄÖÖÓʱÖÓ£¬¶øÇÒËü»¹Ã»Óг¬Ê±£¬Ôò½«¸ÃÄÖÖÓʱÖÓµÄÓàÁôÖµ×÷Ϊ±¾´Îalarmº¯Êýµ÷Óõķµ»ØÖµ¡£ÒÔǰµÇ¼ÇµÄÄÖÖÓʱÖÓ½«±»ÐÂÖµ´úÌæ¡£


Èç¹ûÓÐÒÔǰΪ½ø³ÌµÇ¼ÇµÄÉÐ䳬¹ýµÄÄÖÖÓʱÖÓ£¬¶øÇÒ±¾´Îµ÷ÓõÄsecondsΪ0£¬ÔòÈ¡ÏûÒÔǰµÄÄÖÖÓʱÖÓ£¬ÆäÓàÁôÖµÈÔ×÷ΪalarmµÄ·µ»ØÖµ¡£
(ÒÔÉÏÕ⼸¶Î»°Õª×Ô¡¶unix»·¾³¸ß¼¶±à³Ì¡·)¡£


ËùÒÔÔÚwhileÑ­»·µÄprintf("...\n");ºóÃæÌí¼ÓÒ»¾äalarm(0);¾Í¿ÉÒÔÂú×ãÎÒµÄÒªÇ󣬼´ÔÚ...ºóÔÙsleep 30sÈ»ºóÔÙ½øÈëÑ­»·¡£


¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºLinux ShellʵÀý¾«½²Ñ§Ï°±Ê¼Ç ÏÂһƪ£ºLinuxÏÂC±à³ÌÈëÃűʼÇ

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ:

¡¤Linuxϵͳ¼ò½é (2025-12-25 21:55:25)
¡¤Linux°²×°MySQL¹ý³Ì (2025-12-25 21:55:22)
¡¤Linuxϵͳ°²×°½Ì³Ì£¨ (2025-12-25 21:55:20)
¡¤HTTP Åc HTTPS µÄ²î„ (2025-12-25 21:19:45)
¡¤ÍøÕ¾°²È«±ØÐ޿ΣºÍ¼ (2025-12-25 21:19:42)