LinuxÄÚºËÔ´Âë·ÖÎö
LinuxÄÚºËÔ´Âë·ÖÎö-Á´±í´úÂë·ÖÎö
·ÖÎöÈË£ºÓàÐñ
·ÖÎöʱ¼ä£º2005Äê11ÔÂ17ÈÕÐÇÆÚËÄ 11:40:10 AM
Óê ζȣº10-11¶È
±àºÅ£º1-4 Àà±ð£º×¼±¸¹¤×÷
Email£ºyuxu9710108@163.com
ʱ´ú±³¾°£º¿ªÊ¼ÔÚwww.linuxforum.net LinuxÄں˼¼ÊõÂÛ̳ÉÏÃæ·¢Ìù£¬ÔÚÍøÓѵİïæÏ£¬
½â¾öÁËһЩÎÊÌâ¡£
°æÈ¨ÉùÃ÷£º°æÈ¨±£Áô¡£±¾ÎÄÓÃ×÷ÆäËûÓÃ;µ±¾×÷Õß±¾ÈËͬÒâ,×ªÔØÇë×¢Ã÷×÷ÕßÐÕÃû
All Rights Reserved. If for other use,must Agreed By the writer.Citing this
text,please claim the writer's name.
Copyright (C) 2005 YuXu
**************************************************
-------------Ë«ÏòÑ»·Á´±í---------------------------
À´Ô´ÓÚ£ºlist.h
Éè¼ÆË¼Ï룺¾¡¿ÉÄܵĴúÂëÖØÓ㬻¯´ó¶ÑµÄÁ´±íÉè¼ÆÎªµ¥¸öÁ´±í¡£
Á´±íµÄ¹¹Ô죺Èç¹ûÐèÒª¹¹ÔìijÀà¶ÔÏóµÄÌØ¶¨ÁÐ±í£¬ÔòÔÚÆä½á¹¹Öж¨ÒåÒ»¸öÀàÐÍΪlist_
headÖ¸ÕëµÄ³ÉÔ±£¬Í¨¹ýÕâ¸ö³ÉÔ±½«ÕâÀà¶ÔÏóÁ¬½ÓÆðÀ´£¬ÐγÉËùÐèÁÐ±í£¬²¢Í¨¹ýͨÓÃÁ´±íº¯
Êý¶ÔÆä½øÐвÙ×÷¡£ÆäÓŵãÊÇÖ»Ðè±àдͨÓÃÁ´±íº¯Êý£¬¼´¿É¹¹ÔìºÍ²Ù×÷²»Í¬¶ÔÏóµÄÁÐ±í£¬¶ø
ÎÞÐèΪÿÀà¶ÔÏóµÄÿÖÖÁбí±àдרÓú¯Êý£¬ÊµÏÖÁË´úÂëµÄÖØÓá£
Èç¹ûÏë¶ÔijÖÖÀàÐÍ´´½¨Á´±í£¬¾Í°ÑÒ»¸ölist_headÀàÐ͵ıäÁ¿Ç¶Èëµ½¸ÃÀàÐÍÖУ¬ÓÃlist_
headÖеijÉÔ±ºÍÏà¶ÔÓ¦µÄ´¦Àíº¯ÊýÀ´¶ÔÁ´±í½øÐбéÀú¡£Èç¹ûÏëµÃµ½ÏàÓ¦µÄ½á¹¹µÄÖ¸Õ룬ʹ
ÓÃlist_entry¿ÉÒÔËã³öÀ´¡£
-------------·ÀÖ¹ÖØ¸´°üº¬Í¬Ò»¸öÍ·Îļþ---------------
#ifndef _LINUX_LIST_H
#define _LINUX_LIST_H
...
#endif
ÓÃÓÚ·ÀÖ¹ÖØ¸´°üº¬Í¬Ò»¸ölist.hÍ·Îļþ
-----------struct list_head{}¼°³õʼ»¯ºê---------
struct list_head
{
struct list_head *next, *prev;
};
list_head´Ó×ÖÃæÉÏÀí½â£¬ºÃÏñÊÇÍ·½áµãµÄÒâ˼¡£µ«´ÓÕâÀïµÄ´úÂëÀ´¿´È´ÊÇÆÕͨ½áµãµÄ½á¹¹
Ìå¡£ÔÚºóÃæµÄ´úÂëÖн«list_headµ±³ÉÆÕͨµÄ½áµãÀ´´¦Àí¡£
--LIST_HEAD_INIT()--LIST_HEAD()--INIT_LIST_HEAD()------
#define LIST_HEAD_INIT(name) { &(name), &(name) }
#define LIST_HEAD(name) \
struct list_head name = LIST_HEAD_INIT(name)
·ÖÎö£ºnameµ±Îª½á¹¹Ìåstruct list_head{}µÄÒ»¸ö½á¹¹Ìå±äÁ¿£¬&(name)Ϊ¸Ã½á¹¹Ìå±äÁ¿µÄ
µØÖ·¡£ÓÃname½á¹¹Ìå±äÁ¿µÄʼµØÖ·½«¸Ã½á¹¹Ìå±äÁ¿½øÐгõʼ»¯¡£
#define INIT_LIST_HEAD(ptr) do { \
(ptr)->next = (ptr); (ptr)->prev = (ptr); \
} while (0)
1.ptrΪһ¸ö½á¹¹ÌåµÄÖ¸Õ룬¶ønameΪһ¸ö½á
Ïà¹ØÎĵµ£º
Ò»¡¢cdÓÃÀ´½øÈëÖ¸¶¨µÄij¸öĿ¼¡£
˵cdÕâ¸öÃüÁîÊÇLinuxÉÏʹÓÃÂÊ×î¸ßµÄÁ½¸öÃüÁîÖ®Ò»²»Îª¹ý°É£¨ÁíÒ»¸öµ±È»ÊÇlsÁË£©£¬Ç°Á½Ìì¿´µ½ÁËÒ»¸öcdÃüÁîµÄС¼¼ÇÉÊÇÎÒÒ»Ö±¶¼²»ÖªµÀµÄ£¬ºÇºÇ£¬ÕâÀï˳±ã¼ÇÏÂÀ´¡£
cd - #»Øµ½ÉÏ´ÎËùÔÚĿ¼£¬¸Ð¾õ»¹ÊDZȽÏÓÐÓã¬Ê¡ÂÔÁ˺ܶàÊäÈë¡£
cd !$ ......
ÎļþÃüÁî
ls – ÁгöĿ¼
ls -al – ʹÓøñʽ»¯ÁгöÒþ²ØÎļþ
cd dir - ¸ü¸ÄĿ¼µ½ dir
cd – ¸ü¸Äµ½ home Ŀ¼
pwd – ÏÔʾµ±Ç°Ä¿Â¼
mkdir dir – ´´½¨Ä¿Â¼ dir
rm file – ɾ³ý file
rm -r dir – ɾ³ýĿ¼ dir
rm -f file – Ç¿ÖÆÉ¾³ý file
rm -rf dir – Ç¿ÖÆÉ¾ ......
LinuxÖ§³Ö¶àÖÖÎļþϵͳ£¬°üÀ¨ext2¡¢ext3¡¢vfat¡¢ntfs¡¢iso9660¡¢jffs¡¢romfsºÍnfsµÈ£¬ÎªÁ˶Ը÷ÀàÎļþϵͳ½øÐÐͳһ¹ÜÀí£¬LinuxÒýÈëÁËÐéÄâÎļþϵͳVFS(Virtual File System)£¬Îª¸÷ÀàÎļþϵͳÌṩһ¸öͳһµÄ²Ù×÷½çÃæºÍÓ¦Óñà³Ì½Ó¿Ú¡£
LinuxϵÄÎļþϵͳ½á¹¹ÈçÏ£º
LinuxÆô¶¯Ê±£¬ ......
LinuxÖ§³Ö¶àÖÖÎļþϵͳ£¬°üÀ¨ext2¡¢ext3¡¢vfat¡¢ntfs¡¢iso9660¡¢jffs¡¢romfsºÍnfsµÈ£¬ÎªÁ˶Ը÷ÀàÎļþϵͳ½øÐÐͳһ¹ÜÀí£¬LinuxÒýÈëÁËÐéÄâÎļþϵͳVFS(Virtual File System)£¬Îª¸÷ÀàÎļþϵͳÌṩһ¸öͳһµÄ²Ù×÷½çÃæºÍÓ¦Óñà³Ì½Ó¿Ú¡£
LinuxϵÄÎļþϵͳ½á¹¹ÈçÏ£º
LinuxÆô¶¯Ê ......
Á´±íµÄɾ³ý
83/*
84 * Delete a list entry by making the prev/next entries
85 * point to each other.
86 *
87 * This is only for internal list manipulation where we know
88 * the prev/next entries already!
89 */
90static inline void __list_del(struct list_head * prev, struct list_head * next)
......