LinuxÄÇЩʶùÖ®ÎÒÊÇSysfs(8)Ò»Æðɢɢ²½ pathwalk
Ç°ÃæËµ¹ý£¬Ö»ÒªÖªµÀÎļþµÄË÷Òý½ÚµãºÅ£¬¾Í¿ÉÒԵõ½ÄǸöÎļþ¡£µ«ÊÇÎÒÃÇÔÚ²Ù×÷Îļþʱ£¬´ÓûÌý˵˻áÄÃ×ÅË÷Òý½ÚµãºÅÀ´²Ù×÷Îļþ£¬ÎÒÃÇÖ»ÖªµÀÎļþÃû¶øÒÑ¡£ ËüÃÇÊÇÈçºÎ"ºÍг"ÆðÀ´µÄÄØ£¿linux°ÑĿ¼Ҳ¿´³ÉÒ»ÖÖÎļþ£¬ÀïÃæ¼Ç¼×ÅÎļþÃûÓëË÷Òý½ÚµãºÅµÄ¶ÔÓ¦¹ØÏµ£¨Ä¿Â¼´æÔÚµÄÔÒò£©¡£±ÈÈçÔÚext3ÎļþϵͳÖУ¬Èç¹ûÎļþÊÇÒ»¸öÄ¿ ¼£¬ÄÇôËüµÄÄÚÈݾÍÊÇһϵÁÐext3_dir_entry_2µÄ½á¹¹
struct ext3_dir_entry_2 {
__u32 inode; /* Inode number */
__u16 rec_len; /* Directory entry length */
__u8 name_len; /* Name length */
__u8 file_type;
char name[EXT3_NAME_LEN]; /* File name */
};
¾Ù ¸öÀý×Ó£¬±ÈÈçÒª´ò¿ª/home/test/hello.c¡£Ê×ÏÈ£¬ÕÒµ½‘/’£¬¶ÁÈëÆäÄÚÈÝ£¬ÕÒµ½ÃûΪ"home"µÄÎļþµÄË÷Òý½ÚµãºÅ£¬´ò¿ª/homeÕâ¸ö "Îļþ"£¬¶ÁÈëÄÚÈÝ£¬ÕÒµ½ÃûΪ "test" µÄµÄÎļþµÄË÷Òý½ÚµãºÅ£¬Í¬Àí£¬ÔÙ´ò¿ªÎļþ"/home/test"£¬ÕÒµ½ÕÒµ½ÃûΪ"hello.c”µÄÎļþµÄË÷Òý½ÚµãºÅ£¬×îºó¾ÍµÃµ½ /home/test/hello.cÁË¡£Õâ¾ÍÊÇpath_walk()º¯ÊýµÄÔÀí¡£
ÆäÖУ¬¸ù¾ÝÒ»¸öÎļþ¼ÐµÄinode£¬ºÍÒ»¸öÎļþÃûÀ´»ñÈ¡¸ÃÎļþµÄinode½á¹¹µÄº¯Êý£¬¾Í½Ðlookup£¬ËüÊÇinode_operationsÀïÃæµÄº¯Êý¡£
struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameidata *);
lookup£¬ ¹ËÃû˼Ò壬¾ÍÊDzéÕÒ£¬±ÈÈç²é²éÔÚtestÕâ¸öÎļþ¼ÐÏ£¬ÓÐûÓнÐhello.cµÄÎļþ£¬Óеϰ£¬¾Í´Ó´æ´¢½éÖÊÖжÁÈ¡Æäinode½á¹¹¡£²¢ÓÃdentry- >d_inodeÖ¸ÏòËü¡£ËùÒÔ£¬ÎÒÃÇÖ»ÒªÖªµÀÁËÎļþµÄ·¾¶ºÍÃû×Ö£¬×Ü¿ÉÒÔ´Ó¸ùĿ¼¿ªÊ¼£¬Ò»²ãÒ»²ãµÄÍùÏÂ×ߣ¬¶¨Î»µ½Ä³Ò»¸öÎļþ¡£
superblockÓëvfsmount
½Ó ÏÂÀ´»¹Òª½éÉÜÁ½¸öÊý¾Ý½á¹¹£¬superblockºÍvfsmount¡£super_block½á¹¹ÊÇ´ÓËùÓоßÌåµÄÎļþϵͳËù³éÏó³öÀ´µÄÒ»¸ö½á¹¹£¬Ã¿Ò»¸öÎÄ ¼þϵͳʵÀý¶¼»áÓÐÒ»¶ÔÓ¦super_block½á¹¹¡£±ÈÈçÿһ¸öext2µÄ·ÖÇø¾ÍÓÐÒ»¸ösuper_block½á¹¹£¬Ëü¼Ç¼Á˸ÃÎļþϵͳʵÀý(·ÖÇø)µÄij ЩÃèÊöÐÔµÄÐÅÏ¢£¬±ÈÈç¸ÃÎļþϵͳʵÀýµÄÎļþϵͳÀàÐÍ£¬Óжà´ó£¬´ÅÅÌÉÏÿһ¿éµÄ´óС, »¹ÓоÍÊÇsuper_operations¡£ËüÓëinode£¬dentryÒ»Ñù£¬Ö»ÊÇijЩÄÚÈÝÔÚÄÚ´æÖеÄÓ³Ïñ¡£¾Íext2Îļþϵͳ¶øÑÔ£¬É豸Éϵij
Ïà¹ØÎĵµ£º
2009 Äê 4 ÔÂ 23 ÈÕ
±¾ÎÄÖÐÎÒÃÇÕë¶Ô Linux É϶àÏ̱߳à³ÌµÄÖ÷ÒªÌØÐÔ×ܽá³ö 5 Ìõ¾Ñ飬ÓÃÒÔ¸ÄÉÆ Linux ¶àÏ̱߳à³ÌµÄϰ¹ßºÍ±ÜÃâÆäÖеĿª·¢ÏÝÚå¡£ÔÚ±¾ÎÄÖУ¬ÎÒÃÇ´©²åһЩ Windows µÄ±à³ÌÓÃÀýÓÃÒÔ¶Ô±È Linux ÌØÐÔ£¬ÒÔ¼ÓÉî¶ÁÕßÓ¡Ïó¡£
±³¾°
Linux ƽ̨ÉϵĶàÏ̳߳ÌÐò¿ª·¢Ïà¶ÔÓ¦ÆäËûƽ̨£¨±ÈÈç Windows£©µÄ¶àÏß³Ì API ÓÐһЩϸ΢ ......
Ò»¡¢ÒýÑÔ£º
±¾ÎĵµµÄÄÚÈݴ󲿷ÝÄÚÈݶ¼ÊÇ´ÓÍøÉÏÊÕ¼¯¶øÀ´£¬È»ºóÅäºÏһЩеĽØÍ¼£¨Äں˰汾£ºV2.4.19£©¡£ÔÚÿһÅäÖÃÏîºó»áÓÐÒ»¸öÑ¡ÔñÖ¸ÄϵIJ¿·Ý£¬ÓÃÀ´Ö¸µ¼´ó¼ÒÔõôÑù¸ù¾Ý×Ô¼ºµÄÇé¿öÀ´×öÏàÓ¦µÄÑ¡Ôñ£»»¹ÓÐÔÚÿһ¸ö´óÏîºÍÎĵµµÄ×îºó»áÓÐÒ»¸ö¾Ñé̸£¬ËüÊÇһЩ¸ßÊÖÃÇÔÚÓ¦¶ÔÎÊÌâºÍ´¦ÀíÌØÓÐÓ²¼þʱµÄһЩ¾Ñ飨Õâ¸ö»¹µ ......
¡¾Îĵµ´´½¨ÈÕÆÚ£º2010-05-30¡¿
001 // P122: Èý¡¢ÉÏ»úÌâ 3
002
003 // test03-03.c
004
005 // Header files included.
006 #include <stdio.h>
00 ......
ÔÚѧϰÓ빤×÷Öж¼Àë²»¿ªLinux£¬ÄÇô¸É´à¾ÍÖ»×°Ò»¸öLinuxËãÁË£¬²»¹ý»¹ÊÇ»áÓÐÓõ½WindowsµÄÇé¿ö£¬±ÈÈç˵дÂÛÎİ¡£¬Ä³Ð©×¨ÒµÈí¼þ°¡Ê²Ã´µÄ¡£²»ÒªËµLinuxÏÂʲô¶¼ÓУ¬ºÇºÇ£¬·´ÕýÎÒÊDz»¸ÒÓÃLinuxϵÄofficeµÄ£¬´òÓ¡Éç¶¼ÓÃMS word¡£¶øwordÎĵµµ½ÁËopenofficeÖ®Á÷µÄÏÂÃæ¾ÍÊÇ»á³öÏÖÇ§Ææ°Ù¹ÖµÄÏÖÏó¡£
......
do_exit() Function
-----------------------------------------------------------------------
kernel/exit.c
707 NORET_TYPE void do_exit(long code)
708 {
709 struct task_struct *tsk = current;
710
711 if (unlikely(in_interrupt()))
712 panic("Aiee, killing interrupt handler!");
713 if ......