Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

[ת]Ïê½âLinux 2.6ÄÚºËÐÂÎļþϵͳ±ä»¯»úÖÆ£¨inotify£©

Ô­ÎĵØÖ·£ºhttp://soft.yesky.com/os/lin/326/2237826.shtml
±¾ÎÄÏêϸµØ½éÉÜÁËÔÚ Linux 2.6.13 ÄÚºËÖÐÐÂÒýÈëµÄÎļþϵͳ±ä»¯Í¨Öª»úÖÆ inotify£¬²¢¾ÙÀý˵Ã÷ÁËËüµÄʹÓÃÓëµäÐÍÓ¦Óð¸Àý¡£
Ò»¡¢ÒýÑÔ
ÖÚËùÖÜÖª£¬Linux ×ÀÃæÏµÍ³Óë MAC »ò Windows Ïà±ÈÓÐÐí¶à²»ÈçÈËÒâµÄµØ·½£¬ÎªÁ˸ÄÉÆÕâÖÖ×´¿ö£¬¿ªÔ´ÉçÇøÌá³öÓû§Ì¬ÐèÒªÄÚºËÌṩһЩ»úÖÆ£¬ÒÔ±ãÓû§Ì¬Äܹ»¼°Ê±µØµÃÖªÄں˻òµ×²ãÓ²¼þÉ豸·¢ÉúÁËʲô£¬´Ó¶øÄܹ»¸üºÃµØ¹ÜÀíÉ豸£¬¸øÓû§Ìṩ¸üºÃµÄ·þÎñ£¬Èç hotplug¡¢udev ºÍ inotify ¾ÍÊÇÕâÖÖÐèÇó´ßÉúµÄ¡£Hotplug ÊÇÒ»ÖÖÄÚºËÏòÓû§Ì¬Ó¦ÓÃͨ±¨¹ØÓÚÈȲå°ÎÉ豸һЩʼþ·¢ÉúµÄ»úÖÆ£¬×ÀÃæÏµÍ³Äܹ»ÀûÓÃËü¶ÔÉ豸½øÐÐÓÐЧµÄ¹ÜÀí£¬udev ¶¯Ì¬µØÎ¬»¤ /dev ϵÄÉ豸Îļþ£¬inotify ÊÇÒ»ÖÖÎļþϵͳµÄ±ä»¯Í¨Öª»úÖÆ£¬ÈçÎļþÔö¼Ó¡¢É¾³ýµÈʼþ¿ÉÒÔÁ¢¿ÌÈÃÓû§Ì¬µÃÖª£¬¸Ã»úÖÆÊÇÖøÃûµÄ×ÀÃæËÑË÷ÒýÇæÏîÄ¿ beagle ÒýÈëµÄ£¬²¢ÔÚ Gamin µÈÏîÄ¿Öб»Ó¦Óá£
ÊÂʵÉÏ£¬ÔÚ inotify ֮ǰÒѾ­´æÔÚÒ»ÖÖÀàËÆµÄ»úÖÆ½Ð dnotify£¬µ«ÊÇËü´æÔÚÐí¶àȱÏÝ£º
        1£®¶ÔÓÚÏë¼àÊÓµÄÿһ¸öĿ¼£¬Óû§¶¼ÐèÒª´ò¿ªÒ»¸öÎļþÃèÊö·û£¬Òò´ËÈç¹ûÐèÒª¼àÊÓµÄĿ¼½Ï¶à£¬½«µ¼Ö´ò¿ªÐí¶àÎļþ¡¢Êö·û£¬ÌرðÊÇ£¬Èç¹û±»¼àÊÓĿ¼ÔÚÒÆ¶¯½éÖÊÉÏ£¨Èç¹âÅÌºÍ USB ÅÌ£©£¬½«µ¼ÖÂÎÞ·¨ umount ÕâЩÎļþϵͳ£¬ÒòΪʹÓà dnotify µÄÓ¦Óôò¿ªµÄÎļþÃèÊö·ûÔÚʹÓøÃÎļþϵͳ¡£
        2£®dnotify ÊÇ»ùÓÚĿ¼µÄ£¬ËüÖ»Äܵõ½Ä¿Â¼±ä»¯Ê¼þ£¬µ±È»ÔÚĿ¼ÄÚµÄÎļþµÄ±ä»¯»áÓ°Ïìµ½ÆäËùÔÚĿ¼´Ó¶øÒý·¢Ä¿Â¼±ä»¯Ê¼þ£¬µ«ÊÇÒªÏëͨ¹ýĿ¼Ê¼þÀ´µÃÖªÄĸöÎļþ±ä»¯£¬ÐèÒª»º´æÐí¶à stat ½á¹¹µÄÊý¾Ý¡£
        3£®Dnotify µÄ½Ó¿Ú·Ç³£²»ÓѺã¬ËüʹÓà signal¡£
Inotify ÊÇÎªÌæ´ú dnotify ¶øÉè¼ÆµÄ£¬Ëü¿Ë·þÁË dnotify µÄȱÏÝ£¬ÌṩÁ˸üºÃÓõ쬼ò½à¶øÇ¿´óµÄÎļþ±ä»¯Í¨Öª»úÖÆ£º
1£®Inotify ²»ÐèÒª¶Ô±»¼àÊÓµÄÄ¿±ê´ò¿ªÎļþÃèÊö·û£¬¶øÇÒÈç¹û±»¼àÊÓÄ¿±êÔÚ¿ÉÒÆ¶¯½éÖÊÉÏ£¬ÄÇôÔÚ umount ¸Ã½éÖÊÉϵÄÎļþϵͳºó£¬±»¼àÊÓÄ¿±ê¶ÔÓ¦µÄ watch ½«±»×Ô¶¯É¾³ý£¬²¢ÇÒ»á²úÉúÒ»¸ö umount ʼþ¡£
2£®Inotify ¼È¿ÉÒÔ¼àÊÓÎļþ£¬Ò²¿ÉÒÔ¼àÊÓĿ¼¡£
3£®Inotify ʹÓÃϵͳµ÷Óöø·Ç SIGIO À´Í¨ÖªÎļþϵͳʼþ¡£
4£®Inotify ʹÓÃÎļþÃèÊö·û×÷Ϊ½Ó¿Ú£¬Òò¶ø¿ÉÒÔʹÓÃͨ³£µÄÎļþ I/O ²Ù×÷select ºÍ poll À´¼àÊÓÎļþϵͳµÄ±ä»¯¡£
Inotify ¿ÉÒÔ¼àÊÓµÄÎļþϵͳʼþ°üÀ¨£º


Ïà¹ØÎĵµ£º

WindowsϵÄLinuxÐéÄâ»úÍøÂçÅäÖÃ

½ñÌìÔÚÐéÄâ»úÏÂÓÖ֨װÁËlinux£¬ÏÂÃæÊÇ´ÓÍøÉÏËѵ½µÄlinuxÐéÄâ»úµÄÍøÂçÅäÖãº
 
1¡¢ Äã×°ºÃÐéÄâ»úºó,Äã»á·¢ÏÖ¶à³öÀ´Á½¸öÍø¿¨ ,Ò»¸ö1,Ò»¸ö8,
2¡¢ ¹²Ïí¶ÔÍâµÄÍø¿¨£º“±¾µØÁ¬½Ó—ÊôÐÔ—¸ß¼¶” Ñ¡ÖÐ
   ÔÊÐíÆäËûÍøÂçÓû§Í¨¹ý´Ë¼ÆËã»úµÄInternetÁ¬½ÓÀ´Á¬½Ó
  £¨Õâʱ“ÔÊÐíÆäËûÍ ......

LinuxÇý¶¯Ö®ioctl

ÔÚÓû§¿Õ¼ä£¬Ê¹ÓÃioctlϵͳµ÷ÓÃÀ´¿ØÖÆÉ豸£¬Ô­ÐÍÈçÏ£º
int ioctl(int fd, unsigned long cmd, ...);
µÚÈý¸ö²ÎÊý²»±íʾһ¸ö±äÊýÄ¿µÄ²ÎÊý£¬¶øÊÇÒ»¸öÀàÐÍ¿ÉÑ¡µÄ²ÎÊý¡£µÚÈý¸ö²ÎÊýÒÀÀµÓÚ¿ØÖÆÃüÁһЩÃüÁî²»ÓòÎÊý£¬Ò»Ð©ÓÃÒ»¸öÕûÊýÖµ£¬Ò»Ð©Ê¹ÓÃÖ¸Õë
1¡¢ioctlº¯Êý¶¨ÒåÃüÁî
ÔÚ±àдioctl´úÂë֮ǰ£¬Ê×ÏÈÐèÒª¶¨ÒåÃüÁΪÁË·ÀÖ¹ ......

LinuxÉ豸Çý¶¯¿ª·¢Ïê½â ±Ê¼Ç3 LinuxÄں˼°Äں˱à³Ì


ÔÚÉ豸Çý¶¯·½Ã棬Linux2.6Ïà¶ÔÓÚLinux2.4ÓнϴóµÄ¸Ä¶¯£¬ÕâÖ÷Òª±íÏÖÔÚÄÚºËAPIÖÐÔö¼ÓÁ˲»ÉÙй¦ÄÜ£¨ÈçÄÚ´æ³Ø£©¡¢sysfsÎļþϵͳ¡¢ÄÚºËÄ£¿é´Ó.o±äΪ.ko¡¢Çý¶¯Ä£¿é±àÒ뷽ʽ¡¢Ä£¿éʹÓüÆÊý¡¢Ä£¿é¼ÓÔØºÍÐ¶ÔØº¯ÊýµÄ¶¨ÒåµÈ·½Ãæ
LinuxÄÚºËÖ÷ÒªÓнø³Ìµ÷¶È¡¢ÄÚ´æ¹ÜÀí¡¢ÐéÄâÎļþϵͳ¡¢ÍøÂç½Ó¿ÚºÍ½ø³Ì¼äͨÐŵÈ5¸ö×Óϵͳ×é³É£¬ÈçÏÂͼ£º ......

LinuxÉ豸Çý¶¯¿ª·¢Ïê½â ±Ê¼Ç4 LinuxÄÚºËÄ£¿é

modprobeÃüÁî±ÈinsmodÃüÁîÇ¿´ó£¬ËüÔÚ¼ÓÔØÄ³Ä£¿éʱ»áͬʱ¼ÓÔØ¸ÃÄ£¿éËùÒÀÀµµÄÆäËûÄ£¿é¡£Ê¹ÓÃmodprobeÃüÁî¼ÓÔØµÄÄ£¿éÈôÒÔ“modprobe –r filename”µÄ·½Ê½Ð¶Ôؽ«Í¬Ê±Ð¶ÔØÆäÒÀÀµµÄÄ£¿é¡£
printk´òÓ¡µ½var/log/messages
2.6ÄÚºËÖÐÒѼÓÔØµÄÐÅÏ¢Ò²´æÔÚÓÚ/sys/moduleĿ¼Ï£¬¼ÓÔØhello.koºó£¬ÄÚºËÖн«°üº¬/sys/mod ......

LinuxÉ豸Çý¶¯¿ª·¢Ïê½â ±Ê¼Ç9 Ò첽֪ͨÓëÒì²½I/O


Ò첽֪ͨ£ºÒ»µ©É豸¾ÍÐ÷£¬ÔòÖ÷¶¯Í¨ÖªÓ¦ÓóÌÐò£¬ÕâÑùÓ¦ÓóÌÐò¸ù±¾²»ÐèÒª²éѯÉ豸״̬£¬ÕâÒ»µã·Ç³£ÀàËÆÓÚÓ²¼þÉϵēÖжϔµÄ¸ÅÄ±È½Ï׼ȷµÄ³ÆÎ½ÊÇ“ÐźÅÇý¶¯µÄÒì²½I/O
 
//Æô¶¯ÐźÅÇý¶¯»úÖÆ
signal(SIGIO, input_handler);//ÈÃinput_handler()´¦ÀíSIGIOÐźÅ
fcntl(fd, F_SETOWN, getpid());//Éè ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ