LinuxϵÄC±à³Ìʵս֮Îļþϵͳ±à³Ì
ÎÄÕÂÀ´Ô´£ºhttp://dev.yesky.com/468/7601968.shtml
2007-10-12 11:01×÷ÕߣºËᦻª³ö´¦£ºÌì¼«ÍøÈí¼þƵµÀÔðÈα༣º·½ÖÛ
1.LinuxÎļþϵͳ
¡¡¡¡LinuxÖ§³Ö¶àÖÖÎļþϵͳ£¬Èçext¡¢ext2¡¢minix¡¢iso9660¡¢msdos¡¢fat¡¢vfat¡¢nfsµÈ¡£ÔÚÕâЩ¾ßÌåÎļþϵͳµÄÉϲ㣬LinuxÌṩÁËÐéÄâÎļþϵͳ£¨VFS£©À´Í³Ò»ËüÃǵÄÐÐΪ£¬ÐéÄâÎļþϵͳΪ²»Í¬µÄÎļþϵͳÓëÄں˵ÄͨÐÅÌṩÁËÒ»ÖµĽӿڡ£ÏÂͼ¸ø³öÁËLinuxÖÐÎļþϵͳµÄ¹ØÏµ£º
¡¡¡¡ÔÚLinuxƽ̨϶ÔÎļþ±à³Ì¿ÉÒÔʹÓÃÁ½ÀຯÊý£º£¨1£©Linux²Ù×÷ϵͳÎļþAPI£»£¨2£©CÓïÑÔI/O¿âº¯Êý¡£ ǰÕßÒÀÀµÓÚLinuxϵͳµ÷Ó㬺óÕßʵ¼ÊÉÏÓë²Ù×÷ϵͳÊǶÀÁ¢µÄ£¬ÒòΪÔÚÈκβÙ×÷ϵͳÏ£¬Ê¹ÓÃCÓïÑÔI/O¿âº¯Êý²Ù×÷ÎļþµÄ·½·¨¶¼ÊÇÏàͬµÄ¡£±¾Õ½«¶ÔÕâÁ½ÖÖ·½·¨½øÐÐʵÀý½²½â¡£
¡¡¡¡2.LinuxÎļþAPI
¡¡¡¡LinuxµÄÎļþ²Ù×÷APIÉæ¼°µ½´´½¨¡¢´ò¿ª¡¢¶ÁдºÍ¹Ø±ÕÎļþ¡£
¡¡¡¡´´½¨
int creat(const char *filename, mode_t mode);
¡¡¡¡²ÎÊýmodeÖ¸¶¨Ð½¨ÎļþµÄ´æÈ¡È¨ÏÞ£¬ËüͬumaskÒ»Æð¾ö¶¨ÎļþµÄ×îÖÕȨÏÞ£¨mode&umask£©£¬ÆäÖÐumask´ú±íÁËÎļþÔÚ´´½¨Ê±ÐèҪȥµôµÄһЩ´æÈ¡È¨ÏÞ¡£umask¿Éͨ¹ýϵͳµ÷ÓÃumask()À´¸Ä±ä£º
int umask(int newmask);
¡¡¡¡¸Ãµ÷Óý«umaskÉèÖÃΪnewmask£¬È»ºó·µ»Ø¾ÉµÄumask£¬ËüÖ»Ó°Ïì¶Á¡¢Ð´ºÍÖ´ÐÐȨÏÞ¡£
¡¡¡¡´ò¿ª
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
¡¡¡¡openº¯ÊýÓÐÁ½¸öÐÎʽ£¬ÆäÖÐpathnameÊÇÎÒÃÇÒª´ò¿ªµÄÎļþÃû(°üº¬Â·¾¶Ãû³Æ£¬È±Ê¡ÊÇÈÏΪÔÚµ±Ç°Â·¾¶ÏÂÃæ)£¬flags¿ÉÒÔÈ¥ÏÂÃæµÄÒ»¸öÖµ»òÕßÊǼ¸¸öÖµµÄ×éºÏ£º
±êÖ¾
º¬Òå
O_RDONLY
ÒÔÖ»¶ÁµÄ·½Ê½´ò¿ªÎļþ
O_WRONLY
ÒÔֻдµÄ·½Ê½´ò¿ªÎļþ
O_RDWR
ÒÔ¶ÁдµÄ·½Ê½´ò¿ªÎļþ
O_APPEND
ÒÔ×·¼ÓµÄ·½Ê½´ò¿ªÎļþ
O_CREAT
´´½¨Ò»¸öÎļþ
O_EXEC
Èç¹ûʹÓÃÁËO_CREAT¶øÇÒÎļþÒѾ´æÔÚ£¬¾Í»á·¢ÉúÒ»¸ö´íÎó
O_NOBLOCK
ÒÔ·Ç×èÈûµÄ·½Ê½´ò¿ªÒ»¸öÎļþ
O_TRUNC
Èç¹ûÎļþÒѾ´æÔÚ£¬Ôòɾ³ýÎļþµÄÄÚÈÝ
¡¡¡¡O_RDONLY¡¢O_WRONLY¡¢O_RDWRÈý¸ö±êÖ¾Ö»ÄÜʹÓÃÈÎÒâµÄÒ»¸ö¡£
¡¡¡¡Èç¹ûʹÓÃÁËO_CREATE±êÖ¾£¬ÔòʹÓõĺ¯ÊýÊÇint open(const char *pathname,int flags,mode_t mode); Õâ¸öʱºòÎÒÃÇ»¹ÒªÖ¸¶¨mode±êÖ¾£¬ÓÃÀ´±íʾÎļþµÄ·ÃÎÊȨÏÞ¡£mode¿ÉÒÔÊÇÒÔÏÂÇé¿öµÄ×éºÏ£º
±êÖ¾
º¬Òå
S_IRUSR
Óû§¿ÉÒÔ¶Á
S_IWUSR
Óû§¿ÉÒÔд
S_IXUSR
Óû§¿ÉÒÔÖ´ÐÐ
S_IRWXU
Óû§¿ÉÒÔ¶Á¡¢Ð´¡¢Ö´ÐÐ
S_IRGRP
×é¿ÉÒÔ¶Á
S_IWGRP
×é¿ÉÒÔÐ
Ïà¹ØÎĵµ£º
linuxÊÇÒ»¸ö¸´ÔÓµÄÈí¼þϵͳ£¬ÆäÄÚºËÔ´´úÂëÍùÍù»áÓõ½Ò»Ð©ÔÚÓ¦ÓóÌÐòÉè¼ÆÖв¿³£¼ûÓïÑԳɷֺͱà³Ì¼¼ÇÉ£¬ÕâЩ¶¼ÊÇ·ÖÎöÄÚºËÔ´´úÂëµÄ»ù±¾¹¦£¬Ï£Íû´ó¼ÒÄÜÖØµãÕÆÎÕ¡£
Ê×ÏÈ£¬gcc±àÒëÆ÷´ÓÓïÑÔÀïÎüÊÕÁË“inline”ºÍ“const”¡£inlineº¯ÊýµÄ´óÁ¿Ê¹Óã¬ÓÐÀûÓÚÌá¸ßÔËÐ ......
C×Ö·û´®´¦Àíº¯ÊýµÄʵÏÖ£¨Linux£©
#include <stddef.h>
char * ___strtok = NULL;
char * strcpy(char * dest,const char *src)
{
char *tmp = dest;
while ((*dest++ = *src++) != '\0')
/* nothing */;
return tmp;
}
char * strncpy(char * dest,const char *src,size_t count)
{
char *tmp = d ......
ÎÊÌâµÄÌá³ö
¡¡¡¡¶à¹úÓïÑԵĴæÔÚ¡¢²»Í¬ÓïÑÔ²Ù×÷ϵͳµÄ´æÔÚ£¬Ê¹µÃÕë¶Ô¶àÓïÑÔµÄÉè¼ÆÆÄ·ÑÖÜÕ£¬ÔÚ±àÂëÉÏËù¸¶³öµÄ¹¤×÷Á¿Ò²Êǿɹ۵ġ£Ëùν±àÂëµÄÎÊÌ⣬¹é½áÆðÀ´£¬¾ÍÊǶþ½øÖƵıàÂëÒÔºÎÖÖ±àÂë¸ñʽ½øÐнâÎöµÄÎÊÌâ¡£ÌØ±ðÊÇÔÚÓ²ÅÌÎļþºÍÄÚ´æÊý¾ÝµÄÏ໥ת»¯¡¢¼´¶Áд¹ý³ÌÖУ¬Èç¹û²ÉÓÃÁË´íÎóµÄ±àÂë¸ñʽ£¬¾Í»áÔì³ÉÂÒÂë¡£JAVA ÓïÑÔÔÚ×Ö·û´ ......
/*FIXME
ISO CÈç¹ûÄãÔÚmain()ÖÐд´úÂëµÄÖм䶨ÒåÁËÒ»¸ö¶ÔÓÚmain¶øÑÔµÄÈ«¾Ö±äÁ¿£¬¾Í»á±¨³öÕâ¸ö´íÎó¡£
*/
°ÑÕâ¸ö±äÁ¿¶¨Òåµ½mainº¯ÊýÖеÄ×îǰ·½£¬¾Í»áÐÞÕýÕâ¸ö´íÎó¡£
¶øÇÒΪÁË·ÀÖ¹³ö´í£¬É趨µÄÖ¸ÕëÖ®ºóÔÙÓвÎÊý´«ÈëmallocÖ®ºóÁ¢¼´¶ÔÓÚÖ¸ÕëÓèÒÔ¿Õ¼äµÄ´´½¨¡£·ÀÖ¹³öÏÖÖ¸Õëδ³õʼ»¯´Ó¶øÒýÆð½«À´¸³ÖµµÄʱºò½«¸ÃÖµ¸²¸ÇÁËÒѾΪ±¾ ......