¡iͦW¡j¦º¤`³B²zµ{§Ç
¡i»¡©ú¡j¨CÓ
UNIX ªº³B²zµ{§Ç¦b®Ö¤ßµ{¦¡ªº³B²zµ{§Çªíùس£¾Ö¦³¤@Ó¶i¤JÂI¡]entry¡^¡A·í®Ö¤ßµ{¦¡°õ¦æ¸Ó³B²zµ{§Ç®É·|¨Ï¥Î¨ìªº¤@¤Á¸ê°T³£Àx¦s¦b³oÓ¶i¤JÂI¤º¡F¨Æ¹ê¤W·í±z¥Î ps -ef «ü¥O¥hÅã¥Ü²Î¤¤©Ò¦³³B²zµ{§Çªº¸ê®Æ®É¡Aps ´N¬O±q³B²zµ{§Çªí¤¤§â¬ÛÃö¸ê®Æ§ä¥X¨Ó¡C¦b§ÚÌ¥H
fork() ¨t²Î©I¥s«Ø¥ß¤@Ó·sªº³B²zµ{§Ç«á¡A®Ö¤ßµ{¦¡·|¦b³B²zµ{§Çªíùاä¤@Ó¶i¤JÂIµ¹³oÓ·s³B²zµ{§Ç¡AµM«á±N¤@¨Ç¸ê°TÀx¦s¦b³oÓ¶i¤JÂI©Ò¹ïÀ³ªº³B²zµ{§Çªí¤º¡C³o¨Ç¸ê°Tùر¦³¤@¶µ¬O¤÷³B²zµ{§ÇªºÃѧO½X¡C·í³oÓ³B²zµ{§Ç¨«§¹¤F¥¦ªº¥Í©R¶g´Á«á¡A¥¦·|°õ¦æ exit() ¨t²Î©I¥s¡A¦¹¨è쥻³B²zµ{§Çªíªº¸ê®Æ·|³Q¸Ó³B²zµ{§ÇªºÄÀ¥X½X¡]exit code¡^¡B°õ¦æ®É©Ò¥Îªº CPU ®É¶¡µ¥¸ê®Æ©Ò¨ú¥N¡A³o¨Ç¸ê®Æ·|³Q¤@ª½«O¯d¨ì¨t²Î±N¥¦¶Ç»¼µ¹¥¦ªº¤÷³B²zµ{§Ç¬°¤î¡C¥Ñ¦¹¥iª¾ zombie¡]defunct¡^³B²zµ{§Çªº¥X²{¬O¦b¤l³B²zµ{§Ç²×¤î«á¡A¦ý¬O¤÷³B²zµ{§Ç¥¼Åª¨ú³o¨Ç¸ê®Æ«e¡C§Q¥Î³oÓì«h§ÚÌ¥i¥H¥Î¤U±ªºµ{¦¡«Ø¥ß¤@Ó zombie ³B²zµ{§Ç¡G1[0] #include <stdio.h>
2[0] #include <sys/types.h>
3[0]
4[0] main()
5[1] {
6[1] pid_t pid;
7[1] switch(pid=fork())
8[2] {
9[2] case -1 :
10[2] perror("fork");
11[2] exit(1);
12[2] case(0) :
13[2] printf("child pid=%d\n",getpid());
14[2] exit(0);
15[2] default :
16[2] sleep(30);
17[1] }
18[1] printf("parent pid=%d\n",getpid());
19[1] exit(0);
20[0] }
ŪªÌ¥i¥H±N¦¹³B²zµ{§Ç¥H¹õ«áªº¤è¦¡¨Ó°õ¦æ¡A³o®É±z±N¥i¥Hµo²{¦³
zombie ªº²£¥Í¡C