Àí½â²¢ÕÆÎÕ½ø³ÌµÄ´´½¨ºÍ¹ÜÀí£¬¶ÔÓÚÌáÉýϵͳÐÔÄÜ¡¢ÓÅ»¯×ÊÔ´ÀûÓÃÒÔ¼°¿ª·¢¸ßЧµÄ²¢·¢³ÌÐòÖÁ¹ØÖØÒª
ÆäÖУ¬¼¶Áª½ø³Ì£¨Cascading Processes£©µÄ¸ÅÄËäÈ»²»³£¼ûÓÚÕýʽÎĵµ£¬µ«±¾ÖÊÉÏÊÇָͨ¹ýһϵÁÐÓÐÐòµÄ½ø³Ì´´½¨²Ù×÷£¬Ðγɲã´Î»¯¡¢ÒÀÀµÐԵĽø³Ì½á¹¹
ÕâÖֽṹÔÚ¸´ÔÓϵͳ¡¢´ó¹æÄ£Êý¾Ý´¦Àí¡¢·Ö²¼Ê½¼ÆËãµÈÁìÓòÓÐ׏㷺µÄÓ¦ÓÃ
±¾ÎĽ«ÉîÈë̽ÌÖ Linux ÏÂÈçºÎ´´½¨¼¶Áª½ø³Ì£¬·ÖÎöÆä±³ºóµÄÔÀí£¬²¢Í¨¹ýʵ¼Ê°¸ÀýչʾÆäʵÏÖ·½·¨
Ò»¡¢½ø³ÌµÄ»ù±¾¸ÅÄîÓëÉúÃüÖÜÆÚ ÔÚ Linux ÖУ¬Ã¿¸ö½ø³Ì¶¼ÓÐÒ»¸öΨһµÄ½ø³Ì±êʶ·û£¨PID£©£¬ÒÔ¼°ÓëÖ®¹ØÁªµÄ¸¸½ø³ÌID£¨PPID£©
½ø³ÌµÄÉúÃüÖÜÆÚ´ÓËü±»´´½¨¿ªÊ¼£¬¾ÀúÔËÐС¢µÈ´ý£¨×èÈû/·Ç×èÈû£©¡¢ÖÕÖ¹µÈ״̬£¬Ö±µ½×îÖÕ±»ÏµÍ³»ØÊÕ
½ø³ÌµÄ´´½¨Í¨³£Í¨¹ý`fork()` ϵͳµ÷ÓÃʵÏÖ£¬Ëü´´½¨Ò»¸öеĽø³Ì×÷Ϊµ÷Óýø³ÌµÄ¸±±¾
нø³Ì¼¸ºõÓµÓÐÓ븸½ø³ÌÏàͬµÄËùÓÐÊôÐÔ£¬µ«ÓÐ×Ô¼ºµÄµØÖ·¿Õ¼äºÍPID
¶þ¡¢¼¶Áª½ø³ÌµÄ¶¨ÒåÓëÓÅÊÆ ¶¨Ò壺¼¶Áª½ø³ÌÊÇÖ¸ÔÚÒ»¸öÖ÷½ø³ÌÏ£¬Í¨¹ýÁ¬Ðøµ÷Óà `fork()` »òÆäËû½ø³Ì´´½¨»úÖÆ£¨Èç`vfork()`,`clone()`£©£¬Éú³ÉһϵÁÐ×Ó½ø³Ì£¬ÕâЩ×Ó½ø³ÌÓÖ¿ÉÒÔ½øÒ»²½´´½¨×Ô¼ºµÄ×Ó½ø³Ì£¬ÐγÉÒ»¸öÊ÷×´»òÍø×´½á¹¹µÄ½ø³Ì²ã´Î
ÿ¸ö×Ó½ø³ÌÔÚÂß¼ÉÏ»ò¹¦ÄÜÉÏ¿ÉÄÜÒÀÀµÓÚÆä¸¸½ø³Ì»ò֮ǰµÄij¸ö½ø³Ì£¬ÐγÉÒ»ÖÖ¼¶ÁªÐ§Ó¦
ÓÅÊÆ£º 1.²¢Ðд¦ÀíÄÜÁ¦£ºÍ¨¹ý´´½¨¶à¸ö×Ó½ø³Ì£¬¿ÉÒÔ³ä·ÖÀûÓöàºËCPU£¬ÊµÏÖÈÎÎñµÄ²¢Ðд¦Àí£¬Ìá¸ßÕûÌåÖ´ÐÐЧÂÊ
2.Ä£¿é»¯Éè¼Æ£º½«¸´ÔÓÈÎÎñ·Ö½âΪ¶à¸ö×ÓÈÎÎñ£¬Ã¿¸ö×ÓÈÎÎñÓɶÀÁ¢µÄ×Ó½ø³Ì¸ºÔ𣬱ãÓÚ´úÂëµÄÄ£¿é»¯ºÍά»¤
3.´íÎó¸ôÀ룺×Ó½ø³ÌµÄÒì³£²»»áµ¼ÖÂÕû¸ö³ÌÐòµÄ±ÀÀ££¬ÔöÇ¿ÁËϵͳµÄÎȶ¨ÐԺͽ¡×³ÐÔ
4.×ÊÔ´ÀûÓ㺸ù¾ÝÈÎÎñÐèÇó¶¯Ì¬µ÷Õû½ø³ÌÊýÁ¿£¬ÓÅ»¯×ÊÔ´·ÖÅ䣬±ÜÃâ×ÊÔ´ÀË·Ñ
Èý¡¢´´½¨¼¶Áª½ø³ÌµÄ»úÖÆÓë²½Öè »úÖÆ£º - fork()£º×î³£ÓõĽø³Ì´´½¨º¯Êý£¬´´½¨Ò»¸öнø³Ì£¬Ð½ø³ÌÊǵ÷Óýø³ÌµÄ¸±±¾
- exec() ϵÁк¯Êý£ºÓÃÓÚÔÚнø³ÌÖÐÖ´ÐÐгÌÐò£¬Ìæ»»ÔÓгÌÐò´úÂë
³£Óë `fork()` ÅäºÏʹÓã¬ÊµÏÖ½ø³ÌÌæ»»
- ¹ÜµÀ£¨Pipe£©¡¢ÏûÏ¢¶ÓÁУ¨Message Queue£©¡¢¹²ÏíÄڴ棨Shared Memory£©µÈIPC£¨½ø³Ì¼äͨÐÅ£©»úÖÆ£ºÓÃÓÚ¼¶Áª½ø³Ì¼äµÄÊý¾Ý½»»»ºÍͬ²½
²½Ö裺 1.Ö÷½ø³Ì³õʼ»¯£ºÉèÖñØÒªµÄ»·¾³±äÁ¿£¬´ò¿ª±ØÒªµÄÎļþ»ò×ÊÔ´
2.´´½¨µÚÒ»¸ö×Ó½ø³Ì£ºÍ¨¹ý fork() ´´½¨£¬¸ù¾ÝÐèÇó¾ö¶¨ÊÇ·ñÔÚ×Ó½ø³ÌÖе÷ÓÃ`exec()` Ö´ÐÐгÌÐò
3.×Ó½ø³Ì´´½¨ºóÐø×Ó½ø³Ì£¨¿ÉÑ¡£©£ºµÚÒ»¸ö×Ó½ø³Ì¿ÉÒÔ¼ÌÐøµ÷Óà `fork()` ´´½¨×Ô¼ºµÄ×Ó½ø³Ì£¬Ðγɼ¶Áª
4.½ø³Ì¼äͨÐÅ£ºÀûÓÃIPC»úÖÆÊµÏÖ¸¸×Ó½ø³Ì»òͬ¼¶½ø³Ì¼äµÄÊý¾Ý´«µÝºÍͬ²½¿ØÖÆ
5.½ø³Ì¹ÜÀí£º°üÀ¨½ø³Ì¼à¿Ø£¨ÈçʹÓà wait(),`waitpid()` ÊÕ¼¯×Ó½ø³Ì״̬£©¡¢×ÊÔ´ÇåÀí£¨Èç¹Ø±ÕÎļþÃèÊö·û¡¢ÊÍ·ÅÄڴ棩µÈ
ËÄ¡¢Êµ¼ù°¸Àý£ºÊµÏÖ¼òµ¥µÄ¼¶Áª½ø³Ì½á¹¹ ÒÔÏÂÊÇÒ»¸ö¼òµ¥µÄC³ÌÐòʾÀý£¬ÑÝʾÁËÈçºÎÔÚLinuxÏ´´½¨¼¶Áª½ø³Ì½á¹¹
³ÌÐò½«´´½¨Ò»¸öÖ÷½ø³Ì£¬¸ÃÖ÷½ø³ÌÉú³ÉÁ½¸ö×Ó½ø³Ì£¬Ã¿¸ö×Ó½ø³ÌÔÙ¸÷×ÔÉú³ÉÒ»¸ö×Ó½ø³Ì£¬ÐγÉÒ»¸ö¼òµ¥µÄÊ÷×´½á¹¹
include