LinuxÏµĶ¨Ê±Æ÷£ºalarm()Óësetitimer()
LinuxÏµĶ¨Ê±Æ÷ÓÐÁ½ÖÖ£¬ÒÔÏ·ֱð½éÉÜ£º
1¡¢alarm
Èç¹û²»ÒªÇóºÜ¾«È·µÄ»°£¬ÓÃalarm()ºÍsignal()¾Í¹»ÁË
unsigned int alarm(unsigned int seconds)
º¯Êý˵Ã÷: alarm()ÓÃÀ´ÉèÖÃÐźÅSIGALRMÔÚ¾¹ý²ÎÊýsecondsÖ¸¶¨µÄÃëÊýºó´«Ë͸øÄ¿Ç°µÄ½ø³Ì¡£Èç¹û²ÎÊýsecondsΪ0£¬Ôò֮ǰÉèÖõÄÄÖÖӻᱻȡÏû£¬²¢½«Ê£ÏµÄʱ¼ä·µ»Ø¡£
·µ»ØÖµ: ·µ»ØÖ®Ç°ÄÖÖÓµÄÊ£ÓàÃëÊý£¬Èç¹û֮ǰδÉèÄÖÖÓÔò·µ»Ø0¡£
alarm()Ö´Ðк󣬽ø³Ì½«¼ÌÐøÖ´ÐУ¬ÔÚºóÆÚ(alarmÒÔºó)µÄÖ´Ðйý³ÌÖн«»áÔÚsecondsÃëºóÊÕµ½ÐźÅSIGALRM²¢Ö´ÐÐÆä´¦Àíº¯Êý¡£
#include
#include
#include
void sigalrm_fn(int sig)
{
printf("alarm!\n");
alarm(2);
return;
}
int main(void)
{
signal(SIGALRM, sigalrm_fn);
alarm(1);
while(1) pause();
}
2¡¢setitimer()
int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue));
setitimer()±Èalarm¹¦ÄÜÇ¿´ó£¬Ö§³Ö3ÖÖÀàÐ͵Ķ¨Ê±Æ÷£º
ITIMER_REAL : ÒÔÏµÍ³ÕæÊµµÄʱ¼äÀ´¼ÆË㣬ËüËͳöSIGALRMÐźš£
ITIMER_VIRTUAL : -ÒԸýø³ÌÔÚÓû§Ì¬Ï»¨·ÑµÄʱ¼äÀ´¼ÆË㣬ËüËͳöSIGVTALRMÐźš£
ITIMER_PROF : ÒԸýø³ÌÔÚÓû§Ì¬ÏºÍÄÚºË̬ÏÂËù·ÑµÄʱ¼äÀ´¼ÆË㣬ËüËͳöSIGPROFÐźš£
setitimer()µÚÒ»¸ö²ÎÊýwhichÖ¸¶¨¶¨Ê±Æ÷ÀàÐÍ£¨ÉÏÃæÈýÖÖÖ®Ò»£©£»µÚ¶þ¸ö²ÎÊýÊǽṹitimervalµÄÒ»¸öʵÀý£»µÚÈý¸ö²ÎÊý¿É²»×ö´¦Àí¡£
setitimer()µ÷Óóɹ¦·µ»Ø0£¬·ñÔò·µ»Ø-1¡£
ÏÂÃæÊǹØÓÚsetitimerµ÷ÓõÄÒ»¸ö¼òµ¥Ê¾·¶£¬ÔÚ¸ÃÀý×ÓÖУ¬Ã¿¸ôÒ»Ãë·¢³öÒ»¸öSIGALRM£¬Ã¿¸ô0.5Ãë·¢³öÒ»¸öSIGVTALRMÐźÅ:
#include
#include
#include
#include
#include
#include
int sec;
void sigroutine(int signo)
{
switch (signo){
case SIGALRM:
printf("Catch a signal -- SIGALRM \n");
signal(SIGALRM, sigroutine);
break;
case SIGVTALRM:
printf("Catch a signal -- SIGVTALRM \n");
signal(SIGVTALRM, sigroutine);
break;
}
return;
}
int main()
{
struct itimerval value, ovalue, value2; //(1)
sec = 5;
printf("process id is %d\n", getpid());
signal(SIGALRM, sigroutine);
signal(SIGVTALRM, sigroutine);
value.it_value.tv_sec = 1;
value.it_value.tv_usec = 0;
value.it_interval.tv_sec = 1;
value.
Ïà¹ØÎĵµ£º
ÔÚlinuxÀïÃæ£¬fork()Ò»¸ö×Ó½ø³Ì£¬½á¹ûÔõô¶¼É±²»µô¡£ÓÉÓÚ²»ÊÇrootÓû§£¬Ê¹ÓÃkill -9 pid£¬Ò²Ã»Óá£
ÔÚps -awtµÄʱºò×ÜÊÇÄÜ¿´µ½ÄǸö×Ó½ø³Ì¡£ÎÒÔÚ×Ó½ø³ÌÀïÃæÆðÁ˸öshell¡£
ºóÀ´googleÁËһϣ¬·¢ÏÖÒªµ÷ÓÃwaitpid²Å¿ÉÒÔ¡£
Õâ¸öÊÇËùνµÄzombie£¨½©Ê¬½ø³Ì£©
ÒýÓÃÒ»¶Î£º
ÔÚfork()/execve()¹ý³ÌÖУ¬¼ÙÉè×Ó½ø³Ì½áÊøÊ±¸¸½ø³ÌÈÔ ......
×î½üÓÐÕâô¸öÐèÇó,
c¸ã¸ãÕýÔò,
±Ï¾¹Regular Expression soÇ¿´ó^_^
±ê×¼µÄCºÍC+
+
¶¼²»Ö§³ÖÕýÔò±í´ïʽ£¬µ«ÓÐһЩº¯Êý¿â¿ÉÒÔ¸¨ÖúC/
C+
+
³ÌÐòÔ±Íê³ÉÕâÒ»¹¦ÄÜ£¬ÆäÖÐ×îÖøÃûµÄµ±ÊýPhilip HazelµÄPerl-
Compatible Regular Expression¿â£¬Ðí¶àLinux·¢Ðа汾¶¼´øÓÐÕâ¸öº¯Êý¿â¡£
±àÒëÕýÔò±í´ïʽ
ΪÁËÌá¸ßЧÂÊ£¬ÔÚ½«Ò»¸ö× ......
http://tech.idv2.com/2008/01/11/linux-sysinfo-cmds/
×î½ü¿´ÁËһЩLinuxÃüÁîÐеÄÎÄÕ£¬ÔÚϵͳÐÅÏ¢²é¿´·½ÃæÑ§µ½²»ÉÙÃüÁî¡£
ÏëÆðÒÔǰд¹ýµÄһƪÆäʵLinuxÕâÑùÓøü¼òµ¥
£¬
·¢ÏÖÕâЩϵͳÐÅÏ¢²é¿´ÃüÁîÒ²¿ÉÒÔ×ܽá³öһƪССµÄ¶«Î÷À´ÁË¡£
ÁíÍâÕâÀï
»¹Óзdz£¶àµÄÃüÁ
¿ÉÒÔ×÷Ϊ²Î¿¼¡£
ϵͳ
# uname -a # ......
dzÎöLinuxÏÂcoreÎļþ
́Ȼ (zhanghua@eyou.net)
2006 Äê 8 ÔÂ 02 ÈÕ
µ±ÎÒÃǵijÌÐò±ÀÀ£Ê±£¬ÄÚºËÓпÉÄܰѸóÌÐòµ±Ç°ÄÚ´æÓ³Éäµ½coreÎļþÀ·½±ã³ÌÐòÔ±ÕÒµ½³ÌÐò³öÏÖÎÊÌâµÄµØ·½¡£×î³£³öÏֵ쬼¸ºõËùÓÐC³ÌÐòÔ±¶¼³öÏÖ¹ýµÄ´íÎó¾ÍÊÇ“¶Î´íÎó”ÁË¡£Ò²ÊÇ×îÄѲé³öÎÊÌâÔÒòµÄÒ»¸ö´íÎó¡£Ï ......
ÓÐʱ²»ÒªÒÔΪprintfÒ»¶¨ÄÜ´òÓ¡³öÊý¾ÝÀ´¡£ÓÐʱ£¬Äã²»ÔÚ³ÌÐòµÄÿ¸öµØ·½printfµÄµØ·½¶¼²»¼ÓÉÏ"\n”,³ÌÐò¸ù±¾¾Í²»´òÓ¡ÈκÎÊý¾Ý³öÀ´£¬ÐŲ»£¿£¡ÎҾ͵¹Ã¹µÄÓöµ½¸öÒ»´Î¡£Óöµ½ÕâЩºÜÍ·Ì۵쬻¹ÒÔΪÊdzÌÐòÄĶù³ö´í¿©¡£ÔÀ´ÕâÊÇÒòΪ£¬ËüÆäʵÓлº³åµÄ¹¦ÄÜ£¬Ö»ÓÐÔÚ“\n”£¬Ëü²Å½«»º³åÀïµÄ ......