˵˵LinuxÖеÄÐźŴ¦ÀíºÍ½©Ê¬½ø³ÌµÄ±ÜÃâ

·¢±íÓÚ£º2011-8-04 10:04

×ÖÌ壺´ó ÖРС | ÉÏһƪ | ÏÂһƪ | ÎÒҪͶ¸å

 ×÷Õߣºhinyunsin(CSDNblog)    À´Ô´£º51TestingÈí¼þ²âÊÔÍø²É±à

·ÖÏí£º

¡¡¡¡Õâ¸öÎÊÌâÊÇÔÚÎÒдһ¸öFile ServerµÄʱºòÓöµ½µÄ¡£Õâ¸öÎļþ·þÎñÆ÷ÿ½ÓÊÕÒ»¸öClientÇëÇ󣬾ÍforkÒ»¸ö½ø³Ì¶ÔËü½øÐд¦Àí¡£ÎªÁ˶ÔÕâ¸öServer½øÐÐѹÁ¦²âÊÔ£¬ÎÒÔÚClient¶ËÉú³ÉÁ˷dz£¶àµÄÎļþ´«ÊäÇëÇó£¬Í¬Ê±ÎªÁ˲âÊÔServerµÄÈÝ´íÄÜÁ¦£¬ÎÒÔÚÕâЩÇëÇóÉú³Éºó£¬°´ÏÂCtrl+C¼üÖжÏÁËÕâЩÎļþ´«Ê䣬·¢ÏÖÿ´ÎÖ´ÐÐÕâÑùµÄ²Ù×÷£¬Server¶Ë¶¼»áÓдóÁ¿µÄ½©Ê¬½ø³ÌÉú³É¡£Ñо¿ÁËÒ»ÕûÌ죬²éÔÄÁ˺ܶà×ÊÁÏ£¬²¢²âÊÔÁ˶à´Î£¬ÖÕÓÚ·¢ÏÖ£¬Ô­À´ÕâЩ½©Ê¬½ø³ÌµÄSIGCHLDÐźű»¸¸½ø³Ì¸øºöÂÔÁË£¡Ã»ÓжÔËûÃǽøÐÐwait£¬´Ó¶øµ¼ÖÂÁËËûÃDZä³ÉÁ˽©Ê¬½ø³Ì£¡

¡¡¡¡ÏÂÃæ¾Ù¸ö¼òµ¥µÄÀý×Ó£º

¡¤¡¤¡¤¡¤¡¤¡¤¡¤¡¤¡¤10¡¤¡¤¡¤¡¤¡¤¡¤¡¤¡¤20¡¤¡¤¡¤¡¤¡¤¡¤¡¤¡¤30¡¤¡¤¡¤¡¤¡¤¡¤¡¤¡¤40¡¤¡¤¡¤¡¤¡¤¡¤¡¤¡¤50¡¤¡¤¡¤¡¤¡¤¡¤¡¤¡¤60¡¤¡¤¡¤¡¤¡¤¡¤¡¤¡¤70¡¤¡¤¡¤¡¤¡¤¡¤¡¤¡¤80¡¤¡¤¡¤¡¤¡¤¡¤¡¤¡¤90¡¤¡¤¡¤¡¤¡¤¡¤¡¤¡¤100¡¤¡¤¡¤¡¤¡¤¡¤¡¤110¡¤¡¤¡¤¡¤¡¤¡¤¡¤120¡¤¡¤¡¤¡¤¡¤¡¤¡¤130¡¤¡¤¡¤¡¤¡¤¡¤¡¤140¡¤¡¤¡¤¡¤¡¤¡¤¡¤150
  1. /* 
  2.  * main.cpp 
  3.  * 
  4.  *  Created on: Jun 17, 2011 
  5.  *      Author: boyce 
  6.  */  
  7. #include <stdio.h>   
  8. #include <stdlib.h>   
  9. #include <unistd.h>   
  10. #include <signal.h>   
  11. #include <wait.h>   
  12. #include <errno.h>   
  13. int num_clients = 0;  
  14. int dead_clients = 0;  
  15. void sig_chld_handler(int sig) {  
  16.     pid_t pid;  
  17.     if (sig == SIGCHLD) {  
  18.         pid = wait(NULL);  
  19.         printf("A child dead, current child number: %d, id: %d/n", ++dead_clients, pid);  
  20.     }  
  21. }  
  22. int main(int argc, char **argv) {  
  23.     pid_t pid;  
  24.     signal(SIGCHLD, sig_chld_handler);  
  25.     for (int i = 0; i < 30; i++) {  
  26.         if ((pid = fork()) == 0) {  
  27.             exit(0);  
  28.         } else if (pid > 0) {  
  29.             printf("A child created, current child number: %d, id: %d/n", ++num_clients, pid);  
  30.         }  
  31.     }  
  32.     sleep(10);  
  33.     return 0;  
  34. }

¡¡¡¡Õâ¶Î´úÂ뽫ͬʱ´´½¨30¸ö½ø³Ì£¬ÕâЩ½ø³Ì½«¼¸ºõÔÚͬһʱ¼äÍ˳ö£¬Í˳ö֮ʱ¶¼»áÏò¸¸½ø³Ì·¢ËÍSIGCHLDÐźţ¬°´ÕÕÇ°Ãæ˵µÄ£¬Èç¹ûÉÏÒ»¸öÐźÅÉÐÇÒÔÚ´¦ÀíÖУ¬ÄÇôµ±Ç°Ðźžͻᱻ¶ªÆú¡£Èç¹ûÀ´Ò»¸öÐźţ¬ÎÒÃǵȴýÒ»¸ö×Ó½ø³Ì£¬ÄÇô³ÌÐòÔËÐÐʱ£¬½«»á·¢ÏÖ£¬×Ü»áÓÐÄÇôһЩ½ø³ÌûÓб»¸¸½ø³ÌµÈµ½¶ø±ä³É½©Ê¬½ø³Ì¡£

¡¡¡¡¾ÍÏñÏÂͼËùʾ£¬30¸ö½ø³ÌÀïÃæ¾ÓÈ»ÓÐ9¸ö½ø³Ì±ä³ÉÁ˽©Ê¬½ø³Ì£¨defunct½ø³Ì£©£¡ÕâЩ½ø³ÌÕ¼¾Ý×Åϵͳ×ÊÔ´²»¿ÏÊÍ·Å£¬Á¬kill¶¼²»ÄÜɱËÀËûÃÇ£¬ÌìɱµÄ£¬ÕâÑù¶¼É±²»ËÀÄ㣡

42/4<1234>
¼ÛÖµ398ÔªµÄ²âÊԿγÌÃâ·ÑÔùËÍ£¬ÌîÎʾíÁìÈ¡°É£¡

¹Ø×¢51Testing

ÁªÏµÎÒÃÇ

¿ì½ÝÃæ°å Õ¾µãµØͼ ÁªÏµÎÒÃÇ ¹ã¸æ·þÎñ ¹ØÓÚÎÒÃÇ Õ¾³¤Í³¼Æ

·¨ÂɹËÎÊ£ºÉϺ£äîϪÂÉʦÊÂÎñËù ÏîÆåÂÉʦ
°æȨËùÓÐ ÉϺ£²©Îª·åÈí¼þ¼¼Êõ¹É·ÝÓÐÏÞ¹«Ë¾ Copyright©51testing.com 2003-2022
ͶËß¼°Òâ¼û·´À¡£ºwebmaster@51testing.com; ÒµÎñÁªÏµ£ºservice@51testing.com 021-64471599-8017

»¦ICP±¸05003035ºÅ

»¦¹«Íø°²±¸ 31010102002173ºÅ