LinuxÉ豸Çý¶¯³ÌÐòѧϰ֮¸ß¼¶×Ö·ûÇý¶¯³ÌÐò
LinuxÉ豸Çý¶¯³ÌÐòѧϰ±Ê¼ÇϵÁÐÎÄÕÂÔ×÷ÕßÊÇ£ºTekkaman Ninja£¬Ëû²©¿ÍµØÖ·£º
http://blog.chinaunix.net/u1/34474/showart_404278.html
ÔÚ´ËÏòTekkaman Ninja±íʾ¸Ðл£¬Ð´³öÕâôºÃµÄÎÄÕ£¬Ê¹ÎÒÉÙ×ßÁ˺ܶàÍä·¡£
½ñÌì½øÈë¡¶LinuxÉ豸Çý¶¯³ÌÐò£¨µÚ3°æ£©¡·µÚÁùÕ¸߼¶×Ö·ûÇý¶¯³ÌÐò²Ù×÷µÄѧϰ¡£
Ò»¡¢ioctl
´ó²¿·ÖÉ豸³ýÁ˶ÁдÄÜÁ¦£¬»¹¿É½øÐг¬³ö¼òµ¥µÄÊý¾Ý´«ÊäÖ®ÍâµÄ²Ù×÷£¬ËùÒÔÉ豸Çý¶¯Ò²±ØÐë¾ß±¸½øÐи÷ÖÖÓ²¼þ¿ØÖƲÙ×÷µÄÄÜÁ¦. ÕâЩ²Ù×÷³£³£Í¨¹ý ioctl ·½·¨À´Ö§³Ö£¬ËüÓкÍÓû§¿Õ¼ä°æ±¾²»Í¬µÄÔÐÍ:
int (*ioctl) (struct inode *inode, struct file *filp,
unsigned int cmd, unsigned long arg);
ÐèҪעÒâµÄÊÇ£º²»¹Ü¿ÉÑ¡µÄ²ÎÊýargÊÇ·ñÓÉÓû§¸ø¶¨ÎªÒ»¸öÕûÊý»òÒ»¸öÖ¸Õ룬Ëü¶¼ÒÔÒ»¸öunsigned longµÄÐÎʽ´«µÝ¡£Èç¹ûµ÷ÓóÌÐò²»´«µÝarg²ÎÊý, ±»Çý¶¯ÊÕµ½µÄ arg ÖµÊÇ䶨ÒåµÄ¡£ÒòΪÔÚarg²ÎÊýÉϵÄÀàÐͼì²é±»¹Ø±ÕÁË,ËùÒÔÈôÒ»¸ö·Ç·¨²ÎÊý´«µÝ¸ø ioctl£¬±àÒëÆ÷ÊÇÎÞ·¨±¨¾¯µÄ£¬ÇÒÈκιØÁªµÄ´íÎóÄÑÒÔ²éÕÒ.
Ñ¡ÔñioctlÃüÁî
ΪÁË·ÀÖ¹Ïò´íÎóµÄÉ豸ʹÓÃÕýÈ·µÄÃüÁÃüÁîºÅÓ¦¸ÃÔÚϵͳ·¶Î§ÄÚΨһ¡£Îª·½±ã³ÌÐòÔ±´´½¨Î¨Ò»µÄ ioctl ÃüÁî´úºÅ£¬ ÿ¸öÃüÁîºÅ±»»®·ÖΪ¶à¸öλ×ֶΡ£Òª°´ Linux Äں˵ÄÔ¼¶¨·½·¨ÎªÇý¶¯Ñ¡Ôñ ioctl µÄÃüÁîºÅ, Ó¦¸ÃÊ×ÏÈ¿´¿´ include/asm/ioctl.h ºÍ Documentation/ioctl-number.txt¡£ ҪʹÓõÄλ×ֶηûºÅ¶¨ÒåÔÚ <linux/ioctl.h> :
type(»ÃÊý)£º8 λ¿í(_IOC_TYPEBITS)£¬²Î¿¼ioctl-number.txtÑ¡ÔñÒ»¸öÊý£¬²¢ÔÚÕû¸öÇý¶¯ÖÐʹÓÃËü¡£
number£¨ÐòÊý£©£ºË³Ðò±àºÅ£¬8 λ¿í(_IOC_NRBITS)¡£
direction£¨Êý¾Ý´«Ë͵ķ½Ïò£©£º¿ÉÄܵÄÖµÊÇ _IOC_NONE(ûÓÐÊý¾Ý´«Êä)¡¢_IOC_READ¡¢ _IOC_WRITEºÍ _IOC_READ|_IOC_WRITE (Ë«Ïò´«ÊäÊý¾Ý)¡£¸Ã×Ö¶ÎÊÇÒ»¸öλÑÚÂ루Á½Î»£©, Òò´Ë¿ÉʹÓà AND ²Ù×÷À´³éÈ¡_IOC_READ ºÍ _IOC_WRITE¡£
size£¨Êý¾ÝµÄ´óС£©£º¿í¶ÈÓëÌåϵ½á¹¹ÓйØ,ARMΪ14λ.¿ÉÔÚºê _IOC_SIZEBITS ÖÐÕÒµ½Ìض¨ÌåϵµÄÖµ.
<linux/ioctl.h> Öаüº¬µÄ <asm/ioctl.h>¶¨ÒåÁËһЩ¹¹ÔìÃüÁî±àºÅµÄºê:
_IO(type,nr)/*ûÓвÎÊýµÄÃüÁî*/
_IOR(type, nr, datatype)/*´ÓÇý¶¯ÖжÁÊý¾Ý*/
_IOW(type,nr,datatype)/*дÊý¾Ý*/
_IOWR(type,nr,datatype)/*Ë«Ïò´«ËÍ*/
/*type ºÍ number ³ÉÔ±×÷Ϊ²ÎÊý±»´«µÝ, ²¢ÇÒ size ³ÉԱͨ¹ýÓ¦Óà sizeof µ½ datatype ²ÎÊý¶øµÃµ½
Ïà¹ØÎĵµ£º
Ê×ÏÈPerl mkdir µÄÓï·¨ÊÇ£º
1.mkdir('dir', ´ú±í¾Åλ¶þ½øÖÆÊý×ÖµÄÊ®½øÖÆÖµ)
ÉèÖÃ775£¬Ôò¸ÃֵΪʮ½øÖƵÄ509£¬¼´¶þ½øÖƵÄ111111101
´ËÊýÖµ²»ÄÜÉèÖÃΪ111111111¼´Ê®½øÖƵÄ511¼´777¡£
2.mkdir('dir', 0³£¼ûunix3λȨÏÞ)
¿ÉÒÔÉèÖÃ777¡£
È»ºóÔÚlinuxÏÂʱ£¬ÓÉÓÚumaskµÄÔÒò£¬Ö»ÄÜÉèÖÃΪ755¡£
ÒòΪ´´½¨ÎļþʱµÄȨÏÞÊÇumaskºÍ ......
LinuxÎļþI/OÖ÷ÒªÓÉread¡¢write¡¢open¡¢close¡¢lseekÎå¸öº¯Êý×é³É£»
Ò»¡¢ÎļþÃèÊö·û
ÔÚǶÈëʽLinuxÖÐÿ´ò¿ªÒ»¸öÎļþ¶¼ÓÐÒ»¸öÃèÊö·ûÓëÖ®¶ÔÓ¦£¬¸ÃÃèÊö·ûÊÇÒ»¸ö·Ç¸ºÕûÊý£»
µ±ÓÃopen´ò¿ª»òн¨Ò»¸öÎļþʱ£¬¸Ãº¯ÊýµÄ·µ»ØÖµ¾ÍÊǸÃÎļþµÄÃèÊö·û£»
......
Linux²»Êǽâ¾öÖйú·¢Õ¹¹ý³ÌÖдæÔÚµÄËùÓÐÎÊÌâµÄÍòÄÜÒ©£¬ËüÖ»ÊÇΪÎÒÃÇÌṩÁËÒ»¸ö¿ÉÒÔÃ÷ÏÔ½µµÍ³É±¾¡¢´Ù½ø¹ú¼ÊºÏ×÷ºÍ»ñµÃ¸ü¹ãÀ«·¢Õ¹Ç°¾°µÄÑ¡ÏîÖ®Ò»¡£Í¨³£Çé¿öÏ£¬¹ÍÓùúÍâÓÅÐã¹ÜÀíºÍ¼¼ÊõÈËÔ±ËùÐèµÄ·ÑÓûá¸ßµÄ¾ªÈË¡£²»½öÒªÏòÕâЩÈËÖ§¸¶¸ß¶îµÄ³ê½ð£¬Í¬Ê±ÒªÎªËûÃÇÓªÔìÒ ......
Linux»·¾³½ø³Ì¼äͨÐÅ£¨Ò»£©
http://www.ibm.com/developerworks/cn/linux/l-ipc/part1/
Linux»·¾³½ø³Ì¼äͨÐÅ£¨¶þ£©ÉÏ
http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html
Linux»·¾³½ø³Ì¼äͨÐÅ£¨¶þ£©ÏÂ
http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index2.html
Linux»·¾³½ø³Ì¼äͨÐÅ£ ......
Èç¹ûÏë½øÒ»²½Á˽âlinuxϵͳ£¬ÊìϤһЩϵͳµ×²ãµÄ¶«Î÷»¹ÊǷdz£±ØÒªµÄ£¬ÎÒÃÇ¿ÉÒÔÏÈÁ˽âһЩlinuxÃüÁîÊÇÈçºÎʵÏÖÏà¹Ø¹¦Äܵģ¬ÄÇôÈçºÎ»ñµÃÃüÁîµÄÔ´´úÂëÄØ£¿ÏÂÃæÎÒÃÇÏêϸ½éÉÜһϡ£
¡¡¡¡ÏÂÃæÒÔ»ñÈ¡catÃüÁîµÄÔ´´úÂëΪÀý˵Ã÷£º
cd /sbin
rpm -qif cat
¡¡ ......