linuxÄÚºËÖеÄHlistÓëList_head½á¹¹
List_Head
²Ù×÷ϵͳÄں˾³£ÐèҪά»¤Êý¾Ý½á¹¹¡£ÄÚºËÓбê×¼µÄÑ»·Á´±í¡¢Ë«ÏòÁ´±íµÄʵÏÖ¡£ÔÚ<Linux/list.h>ÎļþÖж¨ÒåÁËÒ»¸ölist_headÀàÐͼòµ¥½á¹¹£º
struct list_head {
struct list_head *next, *prev;
};
ͨÓÃÁ´±íµÄ³£ÓÃÓÃ;Êǽ«Ä³Ò»¸öÊý¾Ý½á¹¹±¾Éí´®³ÉÁ´±í£¬»ò½«Ä³Ð©Á´±íÓëÒ»¸öÊý¾Ý½á¹¹ÁªÏµÆðÀ´£¬ÕâÁ½ÖÖÇé¿öʵÖÊÉ϶¼ÊÇÓɽṹlist_head×é³ÉÁ´±í£¬Ö»ÊÇlist_headËù“±³¸º”µÄ¸ºÔز»Ò»Ñù¡£ÏÂÃæ·Ö±ð¾ÙÀý˵Ã÷ÕâÁ½ÖÖÓÃ;¡£
ÒÔÏÂʾÀý˵Ã÷ÁËÈçºÎ½«Ä³Ò»¸öÊý¾Ý½á¹¹±¾Éí´®³ÉÁ´±í£¬²¢¶ÔÁ´±í½øÐвÙ×÷£¬Í¬Ê±»¹ËµÃ÷list_head½á¹¹µÄʵÏÖÓëʹÓá£
ʾÀý£º½«Ä³Ò»¸öÊý¾Ý½á¹¹±¾Éí´®³ÉÁ´±í¡£
£¨1£©¼ÓÈëlist_head½á¹¹³ÉÔ±¡£
¼ÙÉèÓÐÒ»¸öexample_struct½á¹¹ÐèÁ¬½Ó³ÉÁ´±í£¬Òò¶øÔÚÆä½á¹¹ÀïÃæ¼ÓÉÏlist_head³ÉÔ±£¬¾Í×é³ÉÁ˽ṹÁ´±í£¬ÈçÏ£º
struct example_struct {
struct list_head list;
int priority;
……//ÆäËû³ÉÔ±
};
ÔÚexample_struct½á¹¹ÖеÄlist³ÉÔ±£¬ÓÃÀ´½«example_struct½á¹¹´®³ÉÁ´±í¡£¿ÉÀí½âΪlist_head“±³¸º”µÄ¸ºÔØÊÇexample_struct½á¹¹¡£
£¨2£©´´½¨list_head½á¹¹¡£
ʹÓÃǰ±ØÐëÉêÇëÁ´±íÍ·²¢Óà INIT_LIST_HEAD ºêÀ´³õʼ»¯Á´±íÍ·¡£¿ÉʹÓÃÁ½ÖÖ·½·¨¡£
·½·¨1£º
struct list_head example_list;
INIT_LIST_HEAD(&example_list);
·½·¨2£º
LIST_HEAD(example_list);
ÆäÖУ¬ÕâÁ½¸öºêÔÚinclude/Linux/list.hÖж¨ÒåÈçÏ£º
#define LIST_HEAD(name) \
struct list_head name = LIST_HEAD_INIT(name)
#define INIT_LIST_HEAD(ptr) do { \
(ptr)->next = (ptr); (ptr)->prev = (ptr); \
} while (0)
ºê¶¨ÒåINIT_LIST_HEAD³õʼ»¯ÁËÁ´±íÍ·£¬¼´Ïòǰ¡¢ÏòºóµÄÖ¸Õë¶¼Ö¸ÏòÁ´±íÍ·¡£ÕâÑù£¬¾ÍÒѳõʼ»¯ÁËÒ»¸öexample_listµÄÁ´±íÍ·£¬ÒÔºó¾Í¿ÉÒÔÏòÁ´±íÖÐÔö¼ÓÁ´±íÔªËØÁË¡£
£¨3£©Á´±íÓëÓû§½á¹¹Á¬½Ó¡£
list_entryºê½«exmplelistÁ´±íÓëexmple_struct½á¹¹ÀàÐÍÁ¬½ÓÆðÀ´¡£
ÓÐÁ½ÏîÁ´±íµÄÁ´±íÍ·
List_entryºêµÄЧ¹û
º¬list_headµÄ¶¨Öƽṹ
next
prev
list_head½á¹¹
¿ÕÁ´±í
<linux/list. h>ÖеÄÁ´±í
ÏÂÃæÕâ¸ö´úÂëÐоÍÊÇ´ÓexamplelistÁ´±íÖеõ½½Úµã¶ÔÓ¦µÄexample_struct½á¹¹Ö¸Õ룬ÆäÖÐptrÊÇexampleli
Ïà¹ØÎĵµ£º
LinuxÈí¼þ°ü£¬³£¼ûµÄ¸ñʽ°üÀ¨ÓÐrpm,deb,tar,gz,tgz,zip,bz2µÈµÈ¡£¼¸ºõÿ¸ölinuxÈí¼þ¶¼»áÌṩtarµÄ¸ñʽµÄÈí¼þ°ü£¬ÒòΪÕâÖÖ¸ñʽµÄÈí¼þ°üÈκΰ汾µÄlinux¶¼Ö§³Ö£¬ËùÒÔ´ó¼ÒÖÁÉÙÒªÁ˽âtarºÍrpmµÄʹÓ÷½·¨¡£ÖÁÓÚdeb¿ÉÓÃalien¹¤¾ßת»»³Étgz»òrpm·½Ê½¡£bz2¿ÉÓÃbunzip2½â°ü¼´¿É¡£
Ò»¡¢RPMÎļþµÄ°²×°
RPM ÊÇRedHat Package ......
LinuxÏÂgetch()ºÍgetche()
I would recommend never mixing input techniques in a program. Don't mix fgets() or scanf() with getchar(). Don't mix any standerd C library input function with a non-standard function that bypasses the C stream mechanism, be that getch(), getche(), bioskey(), or anything el ......
Ò»¡¢LinuxÄÚºËÄ£¿éµÄ¹ÜÀí
1¡¢lsmod ÁмÓÒÔ¹ÒÔØµÄÄÚºËÄ£¿é£»
lsmod ÊÇÁгöĿǰϵͳÖÐÒѼÓÔØµÄÄ£¿éµÄÃû³Æ¼°´óСµÈ£»ÁíÍâÎÒÃÇ»¹¿ÉÒԲ鿴 /proc/modules £¬ÎÒÃÇÒ»Ñù¿ÉÒÔÖªµÀϵͳÒѾ¼ÓÔØµÄÄ£¿é£»
´úÂë:
[root@localhost beinan]# lsmod
2¡¢modinfo ²é¿´Ä£¿éÐÅÏ¢£»
modinfo ¿ÉÒԲ鿴ģ¿éµ ......
¿´LDD3ÖÐÉ豸ģÐÍÒ»Õ£¬¾õµÃ˼άÓÐЩ»ìÂÒ¡£ÕâÀï´ÓÕûÌåµÄ½Ç¶ÈÀ´ÀíÀí˼·¡£
±¾ÎÄ´ÓËĸö·½ÃæÀ´×ܽáһЩÄÚÈÝ£º
1.µ×²ãÊý¾Ý½á¹¹£ºkobject,kset.
2.linuxÉ豸ģÐͲã´Î¹ØÏµ£ºbus_type,device,device_driver.
3.¼¯³É£ºPCIÉ豸Çý¶¯Ä£ÐÍʵÀý¼°É豸£¬É豸Çý¶¯×¢²áÔ´ÂëµÄ¼òµ¥·ÖÎö.
4.ÃæÏò¶ÔÏóµÄ˼ÏëÔÚlinuxÉ豸ģÐÍÖеÄÓ¦Ó÷ÖÎö.
......
¹þÏ£±í£¨Hashtable£©ÓÖ³ÆÎª“É¢ÖÔ£¬HashtableÊÇ»á¸ù¾ÝË÷Òý¼üµÄ¹þÏ£³ÌÐò´úÂë×éÖ¯³ÉµÄË÷Òý¼ü£¨Key£©ºÍÖµ£¨Value£©Åä¶ÔµÄ¼¯ºÏ¡£Hashtable ¶ÔÏóÊÇÓɰüº¬¼¯ºÏÖÐÔªËØµÄ¹þϣͰ£¨Bucket£©Ëù×é³ÉµÄ¡£¶øBucketÊÇHashtableÄÚÔªËØµÄÐéÄâ×ÓȺ×飬¿ÉÒÔÈô󲿷ּ¯ºÏÖеÄËÑѰºÍ»ñÈ¡¹¤×÷¸üÈÝÒס¢¸ü¿ìËÙ¡£
¹þÏ£º¯ ......