[ת]Ïê½â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 ¿ÉÒÔ¼àÊÓµÄÎļþϵͳʼþ°üÀ¨£º
Ïà¹ØÎĵµ£º
ÔÚÓû§¿Õ¼ä£¬Ê¹ÓÃioctlϵͳµ÷ÓÃÀ´¿ØÖÆÉ豸£¬ÔÐÍÈçÏ£º
int ioctl(int fd, unsigned long cmd, ...);
µÚÈý¸ö²ÎÊý²»±íʾһ¸ö±äÊýÄ¿µÄ²ÎÊý£¬¶øÊÇÒ»¸öÀàÐÍ¿ÉÑ¡µÄ²ÎÊý¡£µÚÈý¸ö²ÎÊýÒÀÀµÓÚ¿ØÖÆÃüÁһЩÃüÁî²»ÓòÎÊý£¬Ò»Ð©ÓÃÒ»¸öÕûÊýÖµ£¬Ò»Ð©Ê¹ÓÃÖ¸Õë
1¡¢ioctlº¯Êý¶¨ÒåÃüÁî
ÔÚ±àдioctl´úÂë֮ǰ£¬Ê×ÏÈÐèÒª¶¨ÒåÃüÁΪÁË·ÀÖ¹ ......
ʲôÊÇÇý¶¯£¿
×îͨË׵ĽâÊ;ÍÊÇ“ÇýʹӲ¼þÉ豸Ðж¯”
×÷Óã¿
É豸Çý¶¯Óëµ×²ãÓ²¼þÖ±½Ó´ò½»µÀ£¬°´ÕÕÓ²¼þÉ豸µÄ¾ßÌ幤×÷·½Ê½¶ÁдÉ豸¼Ä´æÆ÷£¬Íê³ÉÉ豸µÄÂÖѯ¡¢Öжϴ¦Àí¡¢DMAͨÐÅ£¬½øÐÐÎïÀíÄÚ´æÏòÐéÄâÄÚ´æµÄÓ³É䣬×îÖÕʹͨÐÅÉ豸Äܹ»ÊÕ·¢Êý¾Ý£¬Ê¹ÏÔʾÉ豸Äܹ»ÏÔʾÎÄ×ÖºÍ»Ãæ£¬Ê¹´æ´¢É豸Äܹ»¼Ç¼ÎļþºÅÊý¾Ý
¼ÆË ......
Ò첽֪ͨ£ºÒ»µ©É豸¾ÍÐ÷£¬ÔòÖ÷¶¯Í¨ÖªÓ¦ÓóÌÐò£¬ÕâÑùÓ¦ÓóÌÐò¸ù±¾²»ÐèÒª²éѯÉ豸״̬£¬ÕâÒ»µã·Ç³£ÀàËÆÓÚÓ²¼þÉϵēÖжϔµÄ¸ÅÄ±È½Ï׼ȷµÄ³ÆÎ½ÊÇ“ÐźÅÇý¶¯µÄÒì²½I/O
//Æô¶¯ÐźÅÇý¶¯»úÖÆ
signal(SIGIO, input_handler);//ÈÃinput_handler()´¦ÀíSIGIOÐźÅ
fcntl(fd, F_SETOWN, getpid());//Éè ......
½ñÌ죬°ÑwindowsÏµĹ¤³Ìµ¼Èëµ½ÁËLinuxÏÂeclipseÖУ¬ÓÉÓÚÒÔǰµÄ¹¤³Ì´úÂ룬¶¼ÊÇGBK±àÂëµÄ£¬¶øUbuntuĬÈÏÊDz»Ö§³ÖGBK±àÂëµÄ¡£ËùÒÔ£¬Ê×ÏÈÎÒÃÇÒªÏÈÈÃUbuntuÖ§³ÖGBK£¬·½·¨ÈçÏ£º
1.
ÐÞ¸Ä/var/lib/locales /supported.d/localÎļþ,ÔÚÎļþÖÐÌí¼Ó
z ......
Spca5xx ÉãÏñÍ·Çý¶¯ÒÆÖ²£¨For Linux 2.6.14£©
Ò»£®ÏÂÔØ²¢½âѹSpca5xxÇý¶¯£¬±¾ÎÄʹÓÃÁËgspcav1-20070508°æ±¾¡£
¶þ£®°æ±¾ËµÃ÷£ºÖ®Ç°³¢ÊÔ¹ýspca5xx*µÄ¶à¸ö°æ±¾£¬ËäÈ»ÒÆÖ²Ã»ÓÐÎÊÌ⣬µ«ÊÇÔÚ½øÐÐv4lÓ¦ÓÃʱ£¬³öÏֺܶàĪÃûÆäÃîµÄ´íÎ󣬱ÈÈçISOC data errorµÈ£¬ºóÀ´»»³ÉÁË×îеÄgspca°æ±¾£¬ÎÊÌâÈ«²¿½â¾ö¡£
Èý£®ÍêÕû±àÒëÒÆÖ²ºÃµÄLi ......