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
Ïà¹ØÎĵµ£º
Linux select()Ïê½â selectϵͳµ÷ÓÃÊÇÓÃÀ´ÈÃÎÒÃǵijÌÐò¼àÊÓ¶à¸öÎļþ¾ä±ú(file descriptor)µÄ״̬±ä»¯µÄ¡£³ÌÐò»áÍ£ÔÚselectÕâÀïµÈ´ý£¬Ö±µ½±»¼àÊÓµÄÎļþ¾ä±úÓÐijһ¸ö»ò¶à¸ö·¢ÉúÁË״̬¸Ä±ä¡£ ÎļþÔÚ¾ä±úÔÚLinuxÀïºÜ¶à£¬Èç¹ûÄãmanij¸öº¯Êý£¬ÔÚº¯Êý·µ»ØÖµ²¿·Ö˵µ½³É¹¦ºóÓÐÒ»¸öÎļþ¾ä±ú±»´´½¨µÄ¶¼Êǵģ¬Èçman socket¿ÉÒÔ¿´µ½&ldqu ......
±à¼gedit /etc/fstab:
//192.168.1.1/winshare /mnt/share defaults,auto,username=windowsÓû§Ãû, password=windowsÃÜÂë 0 0
±¸×¢£º
£¨1£©ÖÕ¶ËÃüÁîÐйÒÔØ£ºmount //192.168.1.1/winshare /mnt/share -o user=windowsÓû§Ãû%windowsÃÜÂë
£¨2£©etc/rc.d/rcÔò¸ù¾ÝÆä²ÎÊýÖ¸¶¨µÄÔËÐÐģʽ(ÔËÐм¶±ð£¬ÔÚinittabÎļþÖпÉÒÔÉèÖ ......
ǶÈëʽLinux²Ù×÷ϵͳѧϰ¹æ»®
ARM+LINUX·Ïߣ¬Ö÷¹¥Ç¶ÈëʽLinux²Ù×÷ϵͳ¼°ÆäÉÏÓ¦ÓÃÈí¼þ¿ª·¢Ä¿±ê£º
£¨1£© ÕÆÎÕÖ÷Á÷ǶÈëʽ΢´¦ÀíÆ÷µÄ½á¹¹ÓëÔÀí£¨³õ²½¶¨Îªarm9£©
£¨2£© ±ØÐëÕÆÎÕÒ»¸öǶÈëʽ²Ù×÷ϵͳ £¨³õ²½¶¨Îªuclinux»òlinux,°æ±¾´ý¶¨£©
£¨3£© ±ØÐëÊìϤǶÈëʽÈí¼þ¿ª·¢Á÷³Ì²¢ÖÁÉÙ×öÒ ......
ÍøÉϹØÓÚfork()ÎÄÕ¶¼Ëµfork()À´´´½¨×Ó½ø³Ì,ÀûÓ÷µ»ØÖµµÄ²»Í¬À´Ö´Ðв»Í¬µÄ´úÂð¶Î.µ«¶¼Ã»ÓÐ˵µ½ÈçºÎʵÏÖ²»Í¬µÄ·µ»ØÖµ.ÏÂÃæÎÒ½«ºÍÄãÀ´ËµËµÕâ¸öÎÊ題:
¿¼ÂÇÈçÏ´úÂë:
int &nb ......