´ÓÒ»µÀÃæÊÔÌâ̸LinuxÏÂforkµÄÔËÐлúÖÆ
ijÍâÆóÃæÊÔlinux¿ª·¢Ö°Î»ÃæÊÔÌ⣺
¸ø³öÈçÏÂC³ÌÐò£¬ÔÚlinuxÏÂʹÓÃgcc±àÒ룺
#include "stdio.h"
#include "sys/types.h"
#include "unistd.h"
int main(void)
{
pid_t pid1;
pid_t pid2;
pid1 = fork();
pid2 = fork();
printf("pid1:%d, pid2:%d\n", pid1, pid2);
}
ÒªÇóÈçÏ£º
ÒÑÖª´ÓÕâ¸ö³ÌÐòÖ´Ðе½Õâ¸ö³ÌÐòµÄËùÓнø³Ì½áÊøÕâ¸öʱ¼ä¶ÎÄÚ£¬Ã»ÓÐÆäËüнø³ÌÖ´ÐС£
1¡¢Çë˵³öÖ´ÐÐÕâ¸ö³ÌÐòºó£¬½«Ò»¹²ÔËÐм¸¸ö½ø³Ì¡£
2¡¢Èç¹ûÆäÖÐÒ»¸ö½ø³ÌµÄÊä³ö½á¹ûÊÇ“pid1:1001, pid2:1002”£¬Ð´³öÆäËû½ø³ÌµÄÊä³ö½á¹û£¨²»¿¼Âǽø³ÌÖ´ÐÐ˳Ðò£©¡£
Ã÷ÏÔÕâµÀÌâµÄÄ¿µÄÊÇ¿¼²ìlinuxÏÂforkµÄÖ´ÐлúÖÆ¡£ÏÂÃæÎÒÃÇͨ¹ý·ÖÎöÕâ¸öÌâÄ¿£¬Ì¸Ì¸linuxÏÂforkµÄÔËÐлúÖÆ¡£
Ô¤±¸ÖªÊ¶
ÕâÀïÏÈÁгöһЩ±ØÒªµÄÔ¤±¸ÖªÊ¶£¬¶ÔlinuxϽø³Ì»úÖÆ±È½ÏÊìϤµÄÅóÓÑ¿ÉÒÔÂÔ¹ý¡£
1¡¢½ø³Ì¿ÉÒÔ¿´×ö³ÌÐòµÄÒ»´ÎÖ´Ðйý³Ì¡£ÔÚlinuxÏ£¬Ã¿¸ö½ø³ÌÓÐΨһµÄPID±êʶ½ø³Ì¡£PIDÊÇÒ»¸ö´Ó1µ½32768µÄÕýÕûÊý£¬ÆäÖÐ1Ò»°ãÊÇÌØÊâ½ø³Ìinit£¬ÆäËü½ø³Ì´Ó2¿ªÊ¼ÒÀ´Î±àºÅ¡£µ±ÓÃÍê32768ºó£¬´Ó2ÖØÐ¿ªÊ¼¡£
2¡¢linuxÖÐÓÐÒ»¸ö½Ð½ø³Ì±íµÄ½á¹¹ÓÃÀ´´æ´¢µ±Ç°ÕýÔÚÔËÐеĽø³Ì¡£¿ÉÒÔʹÓÓps aux”ÃüÁî²é¿´ËùÓÐÕýÔÚÔËÐеĽø³Ì¡£
3¡¢½ø³ÌÔÚlinuxÖгÊÊ÷×´½á¹¹£¬initΪ¸ù½Úµã£¬ÆäËü½ø³Ì¾ùÓи¸½ø³Ì£¬Ä³½ø³ÌµÄ¸¸½ø³Ì¾ÍÊÇÆô¶¯Õâ¸ö½ø³ÌµÄ½ø³Ì£¬Õâ¸ö½ø³Ì½Ð×ö¸¸½ø³ÌµÄ×Ó½ø³Ì¡£
4¡¢forkµÄ×÷ÓÃÊǸ´ÖÆÒ»¸öÓ뵱ǰ½ø³ÌÒ»ÑùµÄ½ø³Ì¡£Ð½ø³ÌµÄËùÓÐÊý¾Ý£¨±äÁ¿¡¢»·¾³±äÁ¿¡¢³ÌÐò¼ÆÊýÆ÷µÈ£©ÊýÖµ¶¼ºÍÔ½ø³ÌÒ»Ö£¬µ«ÊÇÊÇÒ»¸öȫеĽø³Ì£¬²¢×÷ΪԽø³ÌµÄ×Ó½ø³Ì¡£
½âÌâµÄ¹Ø¼ü
ÓÐÁËÉÏÃæµÄÔ¤±¸ÖªÊ¶£¬ÎÒÃÇÔÙÀ´¿´¿´½âÌâµÄ¹Ø¼ü¡£ÎÒÈÏΪ£¬½âÌâµÄ¹Ø¼ü¾ÍÊÇÒªÈÏʶµ½fork½«³ÌÐòÇгÉÁ½¶Î¡£¿´ÏÂͼ£º
ÉÏͼ±íʾһ¸öº¬ÓÐforkµÄ³ÌÐò£¬¶øforkÓï¾ä¿ÉÒÔ¿´³É½«³ÌÐòÇÐΪA¡¢BÁ½¸ö²¿·Ö¡£È»ºóÕû¸ö³ÌÐò»áÈçÏÂÔËÐУº
step1¡¢ÉèÓÉshellÖ±½ÓÖ´ÐгÌÐò£¬Éú³ÉÁ˽ø³ÌP¡£PÖ´ÐÐÍêPart. AµÄËùÓдúÂë¡£
&
Ïà¹ØÎĵµ£º
ÔÚubuntuÏ»ù±¾ÉÏÖ»Òªapt-get ¾Í¿ÉÒÔÁË£¬µ«ÊÇÓÐʱºòÒª³¢Ïʾ͵ÃÈ¥ÁíÍâÏÂÁË£¬Õâʱ¾ÍÒªÁ˽âһЩlinuxϰ²Èí¼þµÄ֪ʶÁË£¬ËùÒÔÔÚÍøÉÏÕÒÁËÕâÆªÎÄÕ£®Õª×Ô£ºCnXHacker.Net
¡¡¡¡ÔÚWindowsϰ²×°Èí¼þʱ£¬Ö»ÐèÓÃÊó±êË«»÷Èí¼þµÄ°²×°³ÌÐò£¬»òÕßÓÃZipµÈ½âѹËõÈí¼þ½âѹËõ¼´¿É°²×°¡£ÔÚLinuxϰ²×°Èí¼þ¶Ô³õѧÕßÀ´Ëµ£¬ÄѶȸßÓÚWindowsÏÂÈí¼ ......
ÈëÃÅÆª
¡¶LINUXȨÍþÖ¸ÄÏ¡·Êé²»´í£¬Ð´µÄºÜÈ«ÃæÒ²±È½Ï¹ã£¬Éæ¼°µÄ²»É×öΪÈëÃÅÊé¼®²»´í£¬¿ÉÒԱȽÏÈ«ÃæµÄÁ˽âlinux¡£ÁíÍâ±È½ÏÈÈÃŵÄÒ²¿ÉÒÔ¿´¿´¡¶Äñ¸çµÄ˽·¿²Ë¡·µÈÊ飬ƫ¹ÜÀíÀàµÄÊé¡£Èç¹ûÏë×öserver·½ÏòµÄ¿ÉÒÔÕÒÀ´¿´¿´¡£
Çý¶¯Æª
¡¶LINUXÉ豸Çý¶¯³ÌÐò¡·¾ÍÊÇÍøÉÏ˵µÄ“LDD”£¬¾µäÖ®×÷£¬±Ø±¸Êé¼®¡£¹ú²ú¾µä¡¶Lin ......
CPU : ARM9 s3c2410
LCD : ¹æ¸ñ²»Ã÷£¨Õâ¸öºÜÎÞÄΣ¬µ«ÊÇÎÒËùÖªµÀµÄÖ»ÓÐÒ»¸ö·Ö±æÂÊ£©
Ô´ÂëÐ޸ģº
/linux-2.6.30.4/arch/arm/mach-s3c2410/mach-smdk2410.c
ÔÚÕâ¸öÎļþÖмÓÈëframebufferµÄ³õʼ»¯Êý¾Ý½á¹¹£¨¾ßÌåÊý¾Ý²ÎÕÕLCD¼¼ÊõÊֲᣩÈçÏ£º
#include <mach/fb.h> ......
Èç¹ûÄãÊÇLinuxµÄÓû§£¬ÄãÊÇ·ñ·Ç³£Ï²»¶ËûµÄʵÓÃÐÔ£¬¼òµ¥±ã½Ý¡£²»¹ý£¬¶ÔÓÚLinuxÈí¼þµÄ°²×°ºÍÐ¶ÔØÒ»Ö±ÊÇÀ§ÈÅÐí¶àÐÂÓû§µÄÄÑÌâ¡£ÔõÑù²ÅÄÜÍê³ÉLinuxÈí¼þµÄ°²×°ºÍÐ¶ÔØµÄ¹ý³ÌÄØ£¿
ÔÚWindowsÖУ¬ÎÒÃÇ¿ÉÒÔʹÓÃÈí¼þ×Ô´øµÄ°²×°Ð¶ÔسÌÐò»òÔÚ¿ØÖÆÃæ°åÖеēÌí¼Ó/ɾ³ý³ÌÐò”À´ÊµÏÖ¡£ÓëÆäÏàÀàËÆ£¬ÔÚ²»Í¬Linux·¢ÐаæÏÂÒ²Óй¦ÄÜÇ¿ ......