BBSˮľÇ廪վ¡Ã¾«»ªÇø
·¢ÐÅÈË: forest (ÇẮС¥~~С¼ªÆª), ÐÅÇø: Unix
±ê Ìâ: [×ªÔØ]unix»·¾³¸ß¼¶±à³Ì--µÚ4Õ ÎļþºÍĿ¼ (×ªÔØ)
·¢ÐÅÕ¾: BBS ˮľÇ廪վ (Fri Mar 17 17:50:09 2000)
¡¾ ÒÔÏÂÎÄ×Ö×ªÔØ×Ô Linux ÌÖÂÛÇø ¡¿
¡¾ ÔÎÄÓÉ kxn Ëù·¢±í ¡¿
·¢ÐÅÈË: taosm (128+64-->cool), ÐÅÇø: unix
±ê Ìâ: unix»·¾³¸ß¼¶±à³Ì--µÚ4Õ ÎļþºÍĿ¼
·¢ÐÅÕ¾: Î÷Ê®°ËBBS (Fri Mar 10 11:41:44 2000), תÐÅ
¡¼BFQ¡½µÚËÄÕ¡þÎļþºÍĿ¼ª¤
4ª±1¡þÒýÑÔª¥
ÔÚÉÏÒ»ÕÂÎÒÃÇ˵Ã÷ÁËÖ´ÐÐI/O²Ù×÷µÄ»ù±¾º¯Êý¡£ÆäÌÖÂÛÊÇÎ§ÈÆÆÕͨÎļþµÄI/O½øÐеÄ
-´ò¿ª-
Îļþ£¬¶Á»òдһ¸öÎļþ¡£±¾Õ½«¹Û²ìÎļþϵͳµÄÆäËüÌØÕ÷ºÍÎļþµÄÐÔÖÊ¡£ÎÒÃÇ´Ós
tatº¯Êý¿ª
ʼ£¬²¢Öð¸ö˵Ã÷stat½á¹¹µÄÿһ¸ö³ÉÔ±ÒÔÁ˽âÎļþµÄËùÓÐÊôÐÔ¡£Ôڴ˹ý³ÌÖУ¬ÎÒÃÇ
µÄ˵Ã÷ÐÞ
¸ÄÕâЩÊôÐԵĸ÷¸öº¯Êý(¸ü¸ÄÊôÖ÷£¬¸ü¸ÄÐí¿ÉÊýµÈ)¡£ÎÒÃÇÒ²½«¸üÏêϸµØ²ì¿´UnixÎÄ
¼þϵͳµÄ
½á¹¹ÒÔ¼°·ûºÅÁ¬½Ó¡£±¾Õ½áÊø²¿·Ö½éÉܶÔĿ¼½øÐвÙ×÷µÄ¸÷¸öº¯Êý£¬²¢ÇÒ¿ª·¢ÁËÒ»
¸öÒÔ½µÐò
±éÀúĿ¼²ã´Î½á¹¹µÄº¯Êý¡£ª¤
4ª±2¡þstat,fstatÒÔ¼°lstatº¯Êýª¥
±¾ÕµÄÌÖÂÛµÄÖÐÐÄÊÇÈý¸östatº¯ÊýÒÔ¼°ËüÃÇËù·µ»ØµÄÐÅÏ¢¡£ª¥
#include<sys/typesª±h>ª¥
#include<sys/statª±h>ª¥
int stat(const char *ª«pathnameª«,struct stat *ª«bufª«);ª¥
int fstat(int ª«filedes,ª«struct stat *ª«bufª«);ª¥
int lstat(const char *ª«pathname,ª«struct stat *ª«bufª«);ª¥
Èý¸öº¯ÊýµÄ·µ»Ø£ºÈô³É¹¦Îª0£¬³ö´íΪ££±ª¥
¸øÓèÒ»¸öpathname,statº¯Êý·µ»ØÒ»¸öÓë´ËÃüÃûÎļþÓйصÄÐÅÏ¢½á¹¹£¬fstatº¯Êý»ñ
µÃÒÑÔÚ²å
Êö·ûfiledesÉÏ´ò¿ªµÄÎļþµÄÓйØÐÅÏ¢¡£lstatº¯ÊýÀàËÆÓÚstat,µ«Êǵ±ÃüÃûµÄÎļþ
ÊÇÒ»¸ö·û
ºÅÁ¬½Óʱ£¬lstat·µ»Ø¸Ã·ûºÅÁ¬½ÓµÄÓйØÐÅÏ¢£¬¶ø²»ÊÇÓɸ÷ûºÅÁ¬½ÓÒýÓõÄÎļþµÄ
ÐÅÏ¢¡£(ÔÚ
4ª±2)½ÚÖе±½µÐòÖÜÓÎĿ¼²ã´Î½á¹¹Ê±£¬ÎÒÃÇÐèÒªlstat¡£ÔÚ4ª±16½ÚÖеĽÏÏêϸµØ
˵Ã÷·ûºÅ
Á¬½Ó¡£)ª¥
lstatº¯Êý²»ÊôÓÚPOSIX 1003ª±1-1990±ê×¼£¬µ«ºÜ¿ÉÄܼӵ½1003ª±1aÖС£SVR4ºÍ4ª±
3+BSDÖ§
³Ölstat¡£ª¥
µÚ¶þ¸ö²ÎÊýÊǸöÖ¸Õ룬ËüÖ¸ÏòÒ»¸öÎÒÃÇÓ¦ÌṩµÄ½á¹¹¡£ÕâЩº¯ÊýÌîдÓÉbufÖ¸ÏòµÄ
½á¹¹¡£¸Ã
½á¹¹µÄʵ¼Ê¶¨Òå¿ÉÄÜËùʵʩ¶øÓÐËù²»Í¬£¬µ«Æä»ù±¾ÐÎʽÊÇ£ºª¤
struct stat{ª¥
mode ¼£Ã£Ä££ª³£²¡½t st ¼£Ã£Ä££ª³£²¡½mode; /*ÎļþÀàÐͺͷ½Ê½(Ðí¿ÉÊý)*/ª¥
ino ¼£Ã£Ä££ª³£²¡½t st ¼£Ã£Ä££ª³£²¡½ino;/* i-½ÚµãºÅ(ÐòÁкÅ)*/ª¥
dev ¼£Ã£Ä££ª³£²¡½t st ¼£Ã£Ä££ª³£²¡½dev;/*É豸ºÅ(Îļþϵͳ)*/ª¥
dev ¼£Ã£Ä££ª³£²¡½t st ¼£Ã£Ä££ª³£²¡½rdev;/*ÌØÊâÎļþµÄÉ豸ºÅ*/ª¥
nlink ¼£Ã£Ä££ª³£²¡½t st ¼£Ã£Ä££ª³£²¡½nlink;/*Á¬½ÓÊý*/ª¥
uid ¼£Ã£Ä££ª³£²¡½t st ¼£Ã£Ä££ª³£²¡½uid;/*ÊôÖ÷µÄÓû§ID*/ª¥
gid ¼£Ã£Ä££ª³£²¡½t st ¼£Ã£Ä££ª³£²¡½gid;/*ÊôÖ÷µÄ×éID*/ª¥
off ¼£Ã£Ä££ª³£²¡½t st ¼£Ã£Ä££ª³£²¡½size;/*ÆÕͨÎļþµÄ×Ö½Ú³¤¶È*/ª¥
time ¼£Ã£Ä££ª³£²¡½t st ¼£Ã£Ä££ª³£²¡½atime;/*×îºó´æÈ¡Ê±¼ä*/ª¥
time ¼£Ã£Ä££ª³£²¡½t st ¼£Ã£Ä££ª³£²¡½mtime;/*×îºóÐ޸ĴæÈ¡Ê±¼ä*/ª¥
time ¼£Ã£Ä££ª³£²¡½t st ¼£Ã£Ä££ª³£²¡½ctime;/*×îºóÎļþ״̬¸ü¸Äʱ¼ä*/ª¥
long st ¼£Ã£Ä££ª³£²¡½blksize;/*×î¼ÑI/O¿é³¤*/ª¥
long st ¼£Ã£Ä££ª³£²¡½blocks;/*·ÖÅäµÄ512×Ö½Ú¿é¿éÊýª¤
};ª¥
POSIXª±1䶨Òåst ¼£Ã£Ä££ª³£²¡½rdevª±st ¼£Ã£Ä££ª³£²¡½blksigeºÍst ¼£Ã£Ä££
ª³£²¡½blo
cks×ֶΡ£SVR4ºÍ4ª±3+BSDÔò¶¨ÒåÁËÕâЩ×ֶΡ£ª¥
×¢Ò⣬³ý×îºóÁ½¸öÒÔÍ⣬ÆäËü¸÷³ÉÔ±¶¼ËµÃ÷Ϊ»ù±¾ÏµÍ³Êý¾ÝÀàÐÍ(¼û2ª±7½Ú)¡£ÎÒÃÇ
½«ËµÃ÷´Ë
½á¹¹µÄÿ¸ö³ÉÔ±ÒÔÁ˽âÎļþÊôÐÔ¡£ª¥
statº¯ÊýµÄ×î´óÓû§ºÜ¿ÉÄÜÊÇls-lÃüÁÓÃÆä¿ÉÒÔ»ñµÃÓйØÒ»¸öÎļþµÄËùÓÐÐÅÏ¢¡£
ª¤
4ª±3¡þÎļþÀàÐͪ¥
ÖÁ½ñÎÒÃÇÒѽéÉÜÁËÁ½ÖÖ²»Í¬µÄÎļþÀàÐÍ-ÆÕͨÎļþºÍĿ¼¡£UnixϵͳµÄ´ó¶àÊýÎļþ
ÊÇÆÕͨÎÄ
¼þ»òĿ¼£¬µ«ÊÇÒ²ÓÐÁíÍâһЩÎļþÀàÐÍ£ºª¥
1ª±ÆÕͨÎļþ(Regular file)¡£ÕâÊÇ×î³£¼ûµÄÎļþÀàÐÍ£¬ÕâÖÖÎļþ°üº¬ÁËijÖÖÐÎʽ
µÄÊý¾Ý¡£
ÖÁÓÚÕâÖÖÊý¾ÝÊÇÎı¾»¹ÊǶþ½øÖÆÊý¾Ý¶ÔÓÚϵͳºË¶øÑÔ²¢ÎÞÇø±ð¡£¶ÔÆÕͨÎļþÄÚÈݵÄ
½âÊÍÓÉ´¦
Àí¸ÃÎļþµÄÓ¦ÓóÌÐò½øÐС£ª¥
2ª±Ä¿Â¼Îļþ(Directory file)¡£ÕâÖÖÎļþ°üº¬ÁËÆäËüÎļþµÄÃû×ÖÒÔ¼°Ö¸ÏòÓëÕâЩ
ÎļþÓйØ
ÐÅÏ¢µÄÖ¸Õë¡£¶ÔÒ»¸öĿ¼Îļþ¾ßÓжÁÐí¿ÉÊýµÄÈÎÒ»½ø³Ì¶¼¿ÉÒÔ¶Á¸ÃĿ¼µÄÄÚÈÝ£¬µ«
Ö»ÓÐϵͳ
ºË¿ÉÒÔдĿ¼Îļþ¡£ª¥
3ª±×Ö·ûÌØÊâÎļþ(Charocter special file)¡£ÕâÖÖÎļþÓÃÓÚϵͳÖеÄijЩÀàÐ͵Ä
É豸¡£ª¥
4ª±¿éÌØÊâÎļþ(Block special file)¡£ÕâÖÖÎļþµäÐ͵ØÓÃÓÚ´ÅÅÌÉ豸¡£ÏµÍ³ÖеÄ
ËùÓÐÉ豸
»òÕßÊÇ×Ö·ûÌØÊâÎļþ£¬»òÕßÊÇ¿éÌØÊâÎļþ¡£ª¥
5ª± FIFO¡£ÕâÖÖÎļþÓÃÓÚ½ø³Ì¼äµÄͨÐÅ£¬ÓÐʱҲ½«Æä³ÆÎªÃüÃû¹ÜµÀ¡£ÔÚ14ª±5¶ÔÆä
½øÐÐ˵Ã÷
¡£ª¥
6ª±Ì×½Ó¿Ú(socket)¡£ÕâÖÖÎļþÓÃÓÚ½ø³Ì¼äµÄÍøÂçͨÐÅ¡£Ì×½Ó¿ÚÒ²¿ÉÓÃÓÚÔÚһ̨ËÞ
Ö÷»úÉϵÄ
½ø³ÌÖ®¼äµÄ·ÇÍøÂçͨÐÅ¡£ÔÚµÚÊ®ÎåÕ£¬ÎÒÃǽ«ÓÃÌ×½Ó¿Ú½øÐнø³Ì¼äµÄͨÐÅ¡£ª¥
Ö»ÓÐ4ª±3+BSD²Å·µ»ØÌ×½Ó¿ÚÎļþÀàÐÍ£¬ËäÈ»SVR4Ö§³ÖÓÃÌ×½Ó¿Ú½øÐнø³Ì¼äͨÐÅ£¬µ«
ÏÖÔÚÊǾ
ÓÉÌ×½Ó¿Úº¯Êý¿âʵÏֵ쬶ø²»ÊÇͨ¹ýϵͳºËÄÚµÄÌ×½Ó¿ÚÎļþÀàÐÍ£¬½«À´µÄSVR4°æ±¾
¿ÉÄÜ»áÖ§
³ÖÌ×½Ó¿ÚÎļþÀàÐÍ¡£ª¥
7ª±·ûºÅÁ¬½Ó(Symbolic link)¡£ÕâÖÖÎļþÖ¸ÏòÁíÒ»¸öÎļþ¡£ÎÒÃÇÔÚ4ª±16Öн«¸ü¶à
µØÊö¼°·û
ºÅÁ¬½Ó¡£ª¥
ÎļþÀàÐÍÐÅÏ¢£¬°üº¬ÔÚstat½á¹¹µÄst ¼£Ã£Ä££ª³£²¡½mode³ÉÔ±ÖС£ÎÒÃÇ¿ÉÒÔÓÃͼ4
ª±1Öеĺê
È·ÊÒÎļþÀàÐÍ¡£ÕâЩºêµÄ²ÎÊý¶¼ÊÇstat½á¹¹ÖеÄst ¼£Ã£Ä££ª³£²¡½mode³ÉÔ±¡£ª¤ª¤
ª¤
ͼ4ª±1¡þÔÚ<sys/statª±h>ÖеÄÎļþÀàÐͺꪤ
ʵÀýª¥
³ÌÐò4ª±1È¡ÆäÃüÁîÐвÎÊý£¬È»ºóÕë¶Ôÿһ¸öÃüÁîÐвÎÊý´òÓ¡ÆäÎļþÀàÐÍ¡£ª¤ª¤ª¤
³ÌÐò4ª±1¡þ¶Ôÿ¸öÃüÁîÐвÎÊý´òÓ¡ÎļþÀàÐͪ¤
³ÌÐò4ª±1µÄÑù±¾Êä³öÊÇ£ºª¥
$ aª±out/vmunix/etc/dev/ttya/dev/sd0a/var/spool/cron/FIFO\ª¥
£¾/bin/dev/printerª¥
/vmunix:ÆÕͨª¥
/etc:Ŀ¼ª¥
/dev/ttya:×Ö·ûÌØÊ⪥
/dev/sd0a:¿éª¥
/var/spool/cron/FIFO:fifoª¥
/bin:symbolic·ûºÅÁ¬½Óª¥
/dev/printer:Ì×½Ó¿Úª¤
(ÆäÖУ¬ÔÚµÚÒ»ÃüÁîÐÐÄ©¶ËÎÒÃǼüÈëÁËÒ»¸ö·´Ð±Ïߣ¬Í¨ÖªshellÎÒÃÇÒªÔÚÏÂÒ»ÐмÌÐø
¼üÈëÃüÁî
£¬È»ºóshellÔÚÏÂÒ»ÐÐÉÏÓÃÆäµÚ¶þÌáʾ·û£¬>,ÌáʾÎÒÃÇÌØµØÊ¹ÓÃÁËlstatº¯Êý¶ø²»ÊÇ
statº¯Êý
ÒÔ±ã¼ì²â·ûºÅÁ¬½Ó¡£ÈçÈôʹÓÃÁËstatº¯Êý£¬Ôò¾ö²»»á¹Û²ìµ½·ûºÅÁ¬½Ó¡£ª¥
½ÏÔçµÄUnix°æ±¾²¢²»ÌṩS ¼£Ã£Ä££ª³£²¡½ISXXXºê£¬ÓÚÊǾÍÐèÒª½«st ¼£Ã£Ä££ª³£²
¡½modeÓë
ÆÁ±Î×ÖS ¼£Ã£Ä££ª³£²¡½IFMTÂß¼Ó룬ȻºóÓë
ÃûΪs ¼£Ã£Ä££ª³£²¡½IFXXXµÄ³£ÊýÏà±È½Ï¡£SVR4ºÍ4ª±3+BSDÔÚÎļþ<sys/statª±h>
Öж¨ÒåÁË
´ËÆÁ±Î×ÖºÍÏà¹ØµÄ³£Êý¡£ÈçÈôÎÒÃDz鿴´ËÎļþ£¬Ôò¿ÉÕÒµ½S ¼£Ã£Ä££ª³£²¡½ISDIRºê
¶¨ÒåΪ£º
ª¥
ÎÒÃÇ˵¹ý£¬ÆÕͨÎļþÊÇ×îÖ÷ÒªµÄÎļþÀàÐÍ£¬µ«Êǹ۲ìÒ»ÏÂÔÚÒ»¸ö¸ø¶¨µÄϵͳÖи÷ÖÖ
ÎļþµÄ±È
ÀýÊǺÜÓÐÐËȤµÄ¡£Í¼4ª±2ÖÐÏÔʾÁËÔÚÒ»¸öÖеȹæÄ£µÄϵͳÖеÄͳ¼ÆÖµ¡£ÕâÒ»Êý¾ÝÊÇ
ÓÉ4ª±21
½ÚÖеijÌÐòµÃµ½µÄ¡£ª¤ª¤ª¤
ͼ4ª±2¡þ²»Í¬ÀàÐÍÎļþµÄ¼ÆÊýÖµºÍ±ÈÀýª¤
4ª±4¡þÉèÖÃÒ»Óû§ ¼£Ã£Ä££ª³£²¡½IDºÍÉèÖÃÒ»×é ¼£Ã£Ä££ª³£²¡½IDª¥
ÓëÒ»¸ö½ø³ÌÏà¹ØÁªµÄIDÓÐÁù¸ö»ò¸ü¶à¡£ËüÃÇʾÓÚͼ4ª±3ÖС£ª¤ª¤ª¤
ͼ4ª±3¡þÓëÿ¸ö½ø³ÌÏà¹ØÁªµÄÓû§IDºÍ×éIDª¥
¡¤Êµ¼ÊÓû§IDºÍʵ¼Ê×éID±êʶÎÒÃǾ¿¾¹ÊÇË¡£ÕâÁ½¸ö×Ö¶ÎÔڵǼʱȡ×ÔÎÒÃÇÔÚ¿ÚÁî
ÎļþÖеÄ
¼Ç¼Ïͨ³££¬ÔÚÒ»¸öµÇ¼»á»°ÆÚÕâЩֵ²¢²»¸Ä±ä£¬µ«Êdz¬¼¶Óû§½ø³ÌÓз½·¨£¬¸Ä
±äËüÃÇ£¬
ÔÚ8ª±10½ÚÖн«ËµÃ÷ÕâЩ·½·¨¡£ª¥
¡¤ÓÐЧÓû§ID£¬ÓÐЧ×éIDÒÔ¼°Ìí¼Ó×éID¾ö¶¨ÁËÎÒÃǵÄÎļþ´æÈ¡Êý£¬ÏÂÒ»½Ú½«¶Ô´Ë½ø
ÐÐ˵Ã÷¡£
(ÎÒÃÇÒÑÔÚ1ª±8½ÚÖÐ˵Ã÷ÁËÌí¼Ó×éID)¡£ª¥
¡¤±£´æµÄÉèÖÃÒ»Óû§ ¼£Ã£Ä££ª³£²¡½IDºÍ±£´æµÄÉèÖÃÒ»×é ¼£Ã£Ä££ª³£²¡½IDÔÚÖ´ÐÐ
Ò»¸ö³ÌÐò
ʱ°üº¬ÁËÓÐЧÓû§I
DºÍÓÐЧ×éIDµÄ¸±±¾£¬ÔÚ8ª±10½ÚÖÐ˵Ã÷setuidº¯Êýʱ£¬ÎÒÃǽ«ËµÃ÷ÕâÁ½¸ö±£´æÖµµÄ
×÷Óᣪ¥
ÔÚPOSIXª±1ÖУ¬ÕâЩ±£´æIDÊÇ¿ÉÑ¡ÔñµÄ¡£Ò»¸öÓ¦ÓóÌÐòÔÚ±àÒëʱ¿É²âÊÔ³£Êý £Ã£Ä
£ª³£²¡½
POSIX ¼£Ã£Ä££ª³£²¡½SAVED ¼£Ã£Ä££ª³£²¡½I
DS£¬»òÔÚÔËÐÐʱÒÔ²ÎÊý ¼£Ã£Ä££ª³£²¡½SC ¼£Ã£Ä££ª³£²¡½SAVED ¼£Ã£Ä££ª³£²¡½ID
Sµ÷Óú¯Êý
sysconf£¬ÒÔÅжϴËʵÏÖÊÇ·ñÖ§³ÖÕâÖÖÌØÕ÷¡£SVR4Ö§³Ö´ËÌØÕ÷¡£ª¥
FIPS ¡£ £µ£ü££±ÒªÇóPOSIXª±1µÄÕâÖÖ¿ÉÑ¡ÔñÌØÕ÷¡£ª¥
ͨ³££¬ÓÐЧÓû§IDµÈÓÚʵ¼ÊÓû§ID£¬ÒÔ¼°ÓÐЧ×éIDµÈÓÚʵ¼ÊÓû§ID¡£ª¥
ÿ¸öÎļþÓÐÒ»¸öÊôÖ÷ºÍ×éÊôÖ÷£¬ÊôÖ÷ÊÇÓÉstat½á¹¹ÖеÄst ¼£Ã£Ä££ª³£²¡½uid±íʾ
µÄ£¬×éÊô
Ö÷ÔòÓÉst ¼£Ã£Ä££ª³£²¡½gid³ÉÔ±±íʾ¡£ª¥
µ±ÎÒÃÇÖ´ÐÐÒ»¸ö³ÌÐòÎļþʱ£¬½ø³ÌµÄÓÐЧÓû§IDͨ³£¾ÍÊÇʵ¼ÊÓû§ID£¬ÓÐЧ×éIDͨ
³£ÊÇʵ¼Ê
×éID¡£µ«ÊÇ¿ÉÒÔÔÚÎļþ·½Ê½×Ö(st ¼£Ã£Ä££ª³£²¡½mode)ÖÐÉèÖÃÒ»¸öÌØÊâ±êÖ¾£¬Æä¶¨
ÒåÊÇ"µ±
Ö´ÐдËÎļþʱ
£¬½«½ø³ÌµÄÓÐЧÓû§IDÉèÖÃΪÎļþµÄÊôÖ÷(st ¼£Ã£Ä££ª³£²¡½uid)"¡£Óë´ËÏàÀàËÆ£¬
ÔÚÎļþ
·½Ê½×ÖÖпÉÒÔÉè
ÖÃÁíһ룬ËüʹµÃÖ´ÐдËÎļþµÄ½ø³ÌµÄÓÐЧ×éIDÉèÖÃΪÎļþµÄ×éÊôÖ÷(st ¼£Ã£Ä££
ª³£²¡½gid
)¡£ÔÚÎļþ·½Ê½×ÖÖеÄÕâÁ½Î»±»³ÆÖ®ÎªÉèÖÃÒ»Óû§ ¼£Ã£Ä££ª³£²¡½IDλºÍÉèÖÃÒ»×é
¼£Ã£Ä££
ª³£²¡½IDλ¡£ª¥
ÀýÈ磬ÈôÎļþÊôÖ÷Êdz¬¼¶Óû§£¬¶øÇÒÉèÖÃÁ˸ÃÎļþµÄÉèÖÃÒ»Óû§ ¼£Ã£Ä££ª³£²¡½I
Dλ£¬È»ºó
µ±¸Ã³ÌÐòÓÉÒ»
¸ö½ø³ÌÔËÐÐʱ£¬Ôò¸Ã½ø³Ì¾ßÓг¬¼¶Óû§ÓÅÏÈÊý¡£²»¹ÜÖ´ÐдËÎļþµÄ½ø³ÌµÄʵ¼ÊÓû§
IDÊÇʲô
£¬¶¼×÷ÕâÖÖ´¦Àí¡£×÷Ϊһ¸öÀý×Ó£¬Unix³ÌÐòpasswd(1)ÔÊÐíÈÎÒ»Óû§¸Ä±äÆä¿ÚÁî×Ö
£¬¸Ã³ÌÐò
ÊÇÒ»¸öÉèÖÃÒ»Óû§ ¼£Ã£Ä££ª³£²¡½ID³ÌÐò¡£ÒòΪ¸Ã³ÌÐòÓ¦Äܽ«Óû§µÄпÚÁî×ÖдÈë
¿ÚÁî×ÖÎÄ
¼þÖÐ(µäÐ͵Ø
ÕâÊÇ/etc/passwd»ò/etc/shadow),¶øÖ»Óг¬¼¶Óû§²Å¾ßÓиÃÎļþµÄдÐí¿ÉÊý£¬ËùÒÔ
ÐèҪʹÓÃ
ÉèÖÃÒ»Óû§ ¼£Ã£Ä££ª³£²¡½IDÌØÕ÷¡£ÒòΪÔËÐÐÉèÖÃÒ»Óû§ ¼£Ã£Ä££ª³£²¡½ID³ÌÐòµÄ
½ø³Ìͨ³£
µÃµ½¶îÍâµÄÐí
¿ÉÊý£¬ËùÒÔÒªÌØ±ð½÷É÷µØ±àдÕâÖÖ³ÌÐò¡£ÎÒÃǽ«ÔÚµÚ°ËÕ¸üÏêϸµØÌÖÂÛÕâÖÖÀàÐ͵Ä
³ÌÐò¡£ª¥
ÔÙ·µ»Øµ½statº¯Êý£¬ÉèÖÃÒ»Óû§ ¼£Ã£Ä££ª³£²¡½IDλ¼°ÉèÖÃÒ»×é ¼£Ã£Ä££ª³£²¡½I
Dλ¶¼°üº¬
ÔÚst ¼£Ã£Ä££ª³£²¡½modeÖµÖС£ÕâÁ½Î»¿ÉÓó£ÊýS ¼£Ã£Ä££ª³£²¡½ISUIDºÍS £Ã£Ä
£ª³£²¡½I
SGID²âÊÔ¡£ª¤
4ª±5¡þÎļþ´æÈ¡Ðí¿ÉÊýª¥
st ¼£Ã£Ä££ª³£²¡½modeÖµÒ²°üº¬Á˶ÔÎļþµÄ´æÈ¡Êýλ¡£µ±ÎÒÃÇ˵¼°Îļþʱ£¬ÎÒÃÇÖ¸
µÄÊÇÇ°Ãæ
ËùÌáµ½µÄÈκÎ
ÀàÐ͵ÄÎļþ¡£ËùÓÐÎļþÀàÐÍ(Ŀ¼£¬×Ö·ûÌØ±ðÎļþµÈ)¶¼ÓÐÐí¿ÉÊý¡£ºÜ¶àÈËÈÏΪֻÓÐ
ÆÕͨÎļþ
ÓдæÈ¡Ðí¿ÉÊý£¬ÕâÊÇÒ»ÖÖÎó½â¡£ª¥
ÿ¸öÎļþÓÐ9¸ö´æÈ¡Êý룬¿É½«ËüÃÇ·Ö³ÉÈýÀà¡£ÕâЩ¶¼Ê¾ÓÚͼ4ª±4ÖС£ª¤ª¤ª¤
ͼ4ª±4¡þ9¸ö´æÈ¡Êýλ(ÔÚ<sys/statª±h>Öж¨Òå)ª¤
ÔÚͼ4ª±4¿ªÍ·ÈýÐÐÖУ¬ÊõÓïÓû§Ö¸µÄÊÇÎļþÊôÖ÷¡£chmod(1)ÃüÁîÓÃÓÚÐÞ¸ÄÕâ9¸öÐí
¿ÉÊýλ¡£
¸ÃÃüÁîÔÊÐíÎÒÃÇÓÃu±íʾÓû§(ÊôÖ÷)£¬ÓÃg±íʾ×飬ÓÃo±íʾÆäËû¡£ÓÐЩÊé°ÑÕâÈýÖÖ
Óû§·ò¸¾
±ð³ÆÖ®ÎªÊôÖ÷£¬×éºÍÊÀ½ç¡£Õâ»áÔì³É»ìÂÒ£¬ÒòΪchmodÃüÁîÓÃo±íʾÆäËû£¬¶ø²»ÊÇÊô
Ö÷(owner
)¡£ÎÒÃǽ«Ê¹ÓÃÊõÓïÓû§£¬×éºÍÆäËû£¬ÒÔ±ãÓëchmodÃüÁîÒ»Ö¡£ª¥
ͼÖеÄÈýÀà´æÈ¡Êý-¶Á¡¢Ð´¼°Ö´ÐÐ-ÒÔ¸÷ÖÖ·½Ê½Óɲ»Í¬µÄº¯ÊýʹÓá£ÎÒÃǽ«ÕâЩ²»Í¬
µÄʹÓÃ
·½·¨ÕªÒªÁÐÔÚÏÂÃæ£¬µ±ËµÃ÷ÕâЩº¯Êýʱ£¬ÔÙ½øÒ»²½×÷ÌÖÂÛ¡£ª¥
µÚÒ»¸ö¹æÔòÊÇ£¬ÎÒÃÇÓÃÃû×ÖÒª´ò¿ªÈÎÒ»ÀàÐ͵ÄÎļþʱ£¬¶Ô¸ÃÃû×ÖÖаüº¬µÄÿһ¸öÄ¿
¼£¬°üÀ¨
Ëü¿ÉÄÜÒþº¬µÄµ±Ç°¹¤×÷Ŀ¼¶¼Ó¦¾ßÓÐÖ´ÐÐÐí¿ÉÊý¡£Õâ¾ÍÊÇΪʲô¶ÔÓÚĿ¼ÆäÖ´ÐÐÐí
¿ÉÊýλ³£
±»³ÆÎªËÑË÷λµÄÔÒò¡£ª¥
ÀýÈ磬ΪÁË´ò¿ªÎļþ/usr/dict/words£¬ÎÒÃÇÐèÒª¾ßÓжÔĿ¼/,/usr,/usr/dictµÄ
Ö´ÐÐÐí¿É
Êý¡£È»ºó£¬ÎÒÃÇÐèÒª¶Ô¸ÃÎļþ±¾ÉíµÄÊʵ±Ðí¿ÉÊý£¬ÕâÈ¡¾öÓÚÎÒÃÇÒªÒÔºÎÖÖ·½Ê½´ò¿ª
Ëü(Ö»¶Á£¬¶Á-дµÈ)¡£
Èç¹ûµ±Ç°Ä¿Â¼ÊÇ/usr/dic,ÄÇôΪÁË´ò¿ªÎļþwords,ÎÒÃÇÐèÒªÓжԸÃĿ¼µÄÖ´ÐÐÐí
¿ÉÊý¡£Õâ
¾ÍÊÇÒþº¬Á˵±Ç°Ä¿Â¼µÄÀý×Ó£¬ÎÒÃÇÔÚÖ¸¶¨´ò¿ªÎļþwordsʱ£¬Ã»ÓÐÏÔʽµØÌá¼°/usr
/dicª±wor
dsÓë/wordsÁ½ÖÖ±íʾ·½·¨ÊÇÒ»Öµġ£ª¥
×¢Ò⣬¶ÔÓÚĿ¼µÄ¶ÁÐí¿ÉÊýºÍÖ´ÐÐÐí¿ÉÊýµÄÒâÒåÊDz»ÏàͬµÄ¡£¶ÁÐí¿ÉÊýÔÊÐíÎÒÃǶÁ
Ŀ¼£¬»ñ
µÃÔÚ¸ÃĿ¼ÖÐËùÓÐÎļþÃûµÄÁÐ±í¡£µ±Ò»¸öĿ¼ÊÇÎÒÃÇÒª´æÈ¡ÎļþµÄ·¾¶ÃûµÄÒ»¸ö·Ö
Á¿Ê±£¬¶Ô
¸ÃĿ¼µÄÖ´ÐÐÐí¿ÉÊýʹÎÒÃÇ¿Éͨ¹ý¸ÃĿ¼¡£(Ò²¾ÍÊÇËÑË÷¸ÃĿ¼£¬Ñ°ÕÒÒ»¸öÌØ¶¨µÄ
ÎļþÃû¡£
)ª¥
ÒýÓÃÒþº¬Ä¿Â¼µÄÁíÒ»¸öÀý×ÓÊÇ£¬Èç¹ûPATH»·¾³±äÁ¿(ÔÚ8ª±4½ÚÖÐ˵Ã÷)Ö¸¶¨ÁËÒ»¸öÎÒ
ÃDz»¾ßÓÐ
´æÈ¡ÊýµÄĿ¼£¬ÄÇôshell¾ö²»»áÔÚ¸ÃĿ¼Ï´òµ½¿ÉÖ´ÐÐÎļþ¡£ª¥
¡¤¶ÔÓÚÒ»¸öÎļþµÄ¶ÁÐí¿ÉÊý¾ö¶¨ÁËÎÒÃÇÊÇ·ñÄܹ»´ò¿ª¸ÃÎļþ½øÐжÁ²Ù×÷¡£Õâ¶ÔÓ¦ÓÚ
openº¯Êý
µÄO ¼£Ã£Ä££ª³£²¡½RDONLYºÍO ¼£Ã£Ä££ª³£²¡½RDWR±êÖ¾¡£ª¥
¡¤¶ÔÓÚÒ»¸öÎļþµÄдÐí¿ÉÊý¾ö¶¨ÁËÎÒÃÇÊÇ·ñ¿ÉÄܹ»´ò¿ª¸ÃÎļþ½øÐÐд²Ù×÷Õâ¶ÔÓ¦ÓÚ
openº¯Êý
µÄO ¼£Ã£Ä££ª³£²¡½WRONLYºÍO ¼£Ã£Ä££ª³£²¡½RDWR±êÖ¾¡£ª¥
¡¤¶ÔÓÚÒ»¸öÎļþµÄдÐí¿ÉÊý¾ö¶¨ÁËÎÒÃÇÊÇ·ñÄܹ»´ò¿ª¸ÃÎļþ½øÐÐд²Ù×÷¡£Õâ¶ÔÓ¦ÓÚ
openº¯Êý
µÄO ¼£Ã£Ä££ª³£²¡½WRONLYºÍO ¼£Ã£Ä££ª³£²¡½RDWR±êÖ¾¡£ª¥
¡¤ÎªÁËÔÚopenº¯ÊýÖжÔÒ»¸öÎļþÖ¸¶¨O ¼£Ã£Ä££ª³£²¡½TRUNC±êÖ¾£¬ÎÒÃDZØÐë¶Ô¸ÃÎÄ
¼þ¾ßÓÐд
²Ù×÷Ðí¿ÉÊý¡£ª¥
¡¤ÎªÁËÔÚÒ»¸öĿ¼Öд´½¨Ò»¸öÐÂÎļþ£¬ÎÒÃǶԸÃĿ¼ÐèÒª¾ßÓÐдÐí¿ÉÊýºÍÖ´ÐÐÐí¿É
Êý¡£ª¥
¡¤ÎªÁËɾ³ýÒ»¸öÎļþ£¬ÎÒÃÇÐèÒª¶Ô°üº¬¸ÃÎļþµÄĿ¼¾ßÓÐдÐí¿ÉÊýºÍÖ´ÐÐÐí¿ÉÊý¡£
¶Ô¸ÃÎļþ
±¾ÉíÔò²»ÐèÒªÓжÁ¡¢Ð´Ðí¿ÉÊý¡£ª¥
¡¤Èç¹ûÎÒÃÇÓÃ6¸öexecº¯Êý(8ª±9½Ú)ÖеÄÈκÎÒ»¸öÖ´ÐÐij¸öÎļþ£¬ÔòÎÒÃÇÐèÒª¶Ô¸Ã
Îļþ¾ßÓÐ
Ö´ÐÐÐí¿ÉÊý¡£ª¥
½ø³Ìÿ´Î´ò¿ª¡¢´´½¨»òɾ³ýÒ»¸öÎļþʱ£¬ÏµÍ³ºË¾Í½øÐÐÎļþ´æÈ¡Êý²âÊÔ£¬¶øÕâÖÖ²â
ÊÔ¿ÉÄÜÉæ
¼°ÎļþµÄÊôÖ÷(st ¼£Ã£Ä££ª³£²¡½uidºÍst ¼£Ã£Ä££ª³£²¡½gid)¡£½ø³ÌµÄÓÐЧID(ÓÐ
ЧÓû§ID
ºÍÓÐЧ×éID)¡¢ÒÔ¼°½ø³ÌµÄÌí¼Ó
×éID(ÈôÖ§³ÖµÄ»°)¡£Á½¸öÊôÖ÷IDÊÇÎļþµÄÐÔÖÊ£¬¶øÓÐЧIDºÍÌí¼Ó×éIDÔòÊǽø³ÌµÄÐÔ
ÖÊ¡£ÏµÍ³
ºË½øÐеIJâÊÔÊÇ£ºª¥
1ª±Èô½ø³ÌµÄÓÐЧÓû§IDÊÇO(³¬¼¶Óû§)£¬ÔòÔÊÐí´æÈ¡¡£Õâ¸øÓÚÁ˳¬¼¶Óû§¶ÔÎļþϵ
ͳ½øÐд¦
ÀíµÄ×î³ä·ÖµÄ×ÔÓÉ¡£ª¥
2ª±Èô½ø³ÌµÄÓÐЧÓû§IDµÈÓÚÎļþµÄÊôÖ÷ID(Ò²¾ÍÊǸýø³ÌÓµÓдËÎļþ)£ºª¥
aª±ÈôÊʵ±µÄÊôÖ÷Óû§´æÈ¡ÊýλÊÇÉèÖõģ¬ÔòÔÊÐí´æÐí£¬ª¥
bª±·ñÔò¾Ü¾ø´æÈ¡¡£ª¥
¹ØÓÚÈ·µ±µÄ´æÈ¡Êý룬ÎÒÃÇÖ¸µÄÊÇ£¬ÈçÈô½ø³ÌΪ¶Á¶ø´ò¿ª¸ÃÎļþ£¬ÊÇÊôÖ÷Óû§-¶Á
λӦΪ1
¡£Èô½ø³ÌΪд¶ø´ò¿ª¸ÃÎļþ£¬ÔòÊôÖ÷Óû§-дλ±ØÐëΪ1¡£Èô½ø³Ì½«Ö´ÐиÃÎļþ£¬Ôò
ÊôÖ÷ÓÃ
»§-Ö´ÐÐλ±ØÐëΪ1¡£ª¥
3ª±Èô½ø³ÌµÄÓÐЧ×éID»ò½ø³ÌµÄÌí¼Ó×éIDÖ®Ò»µÈÓÚÎļþµÄ×éID£ºª¥
aª±ÈôÊʵ±µÄ×é´æÈ¡ÊýλÊÇÉèÖõģ¬ÔòÔÊÐí´æÈ¡£¬ª¥
bª±·ñÔò¾Ü¾ø´æÈ¡¡£ª¥
4ª±ÈôÊʵ±µÄÆäËûÓû§´æÈ¡ÊýλÊÇÉèÖõģ¬ÔòÔÊÐí´æÈ¡£¬·ñÔò¾Ü¾ø´æÈ¡¡£ª¥
°´ÐòÊÔÖ´ÐÐÕâËIJ½¡£×¢Ò⣬ÈçÈô½ø³ÌÓµÓдËÎļþ(µÚ2²½)£¬Ôò°´Óû§´æÈ¡ÊýÅú×¼»ò
¾Ü¾ø¸Ã½ø
³Ì¶ÔÎļþµÄ´æÈ¡-²»²é¿´×é´æÈ¡Êý¡£ÏàÀàËÆ£¬Èô½ø³Ì²¢²»ÓµÓиÃÎļþ¡£µ«½ø³ÌÊôÓÚ
ij¸öÊʵ±
µÄ×飬Ôò°´×é´æÈ¡ÊýÅú×¼¾Ü¾ø¸Ã½ø³Ì¶ÔÎļþµÄ´æÈ¡-²»²é¿´ÆäËüÓû§´æÈ¡Êý¡£ª¤
4ª±6¡þÐÂÎļþºÍĿ¼µÄÊôÖ÷¹ØÏµª¥
ÔÚµÚÈýÕÂÖУ¬µ±ËµÃ÷ÓÃopen»òcreat´´½¨ÐÂÎļþʱ£¬ÎÒÃÇûÓÐ˵Ã÷¸³ÓëÐÂÎļþµÄÓÃ
»§IDºÍ×éI
DµÄÖµÊÇʲô¡£ÔÚ4ª±20ÖУ¬ÎÒÃǽ«ËµÃ÷ÈçºÎ´´½¨Ò»¸öÐÂĿ¼ÒÔ¼°mkdirº¯Êý¡£¹ØÓÚ
ÐÂĿ¼µÄ
ÊôÖ÷¹ØÏµµÄ¹æÔòÓë±¾½Ú½«ËµÃ÷µÄÐÂÎļþµÄÊôÖ÷¹ØÏµµÄ¹æÔòÏàͬ¡£ª¥
ÐÂÎļþµÄÓû§IDÉèÖÃΪ½ø³ÌµÄÓÐЧÓû§ID¡£¹ØÓÚ×éID£¬POSIXª±1ÔÊÐíÑ¡ÔñÏÂÁÐÖ®Ò»
×÷ΪÐÂÎÄ
¼þµÄ×éID¡£ª¥
1ª±ÐÂÎļþµÄ×éID¿ÉÒÔÊǽø³ÌµÄÓÐЧ×éID¡£ª¥
2ª±ÐÂÎļþµÄ×éID¿ÉÒÔÊÇËüËùÔÚĿ¼µÄ×éID¡£ª¥
ÔÚSVR4ÖУ¬ÐÂÎļþµÄ×éID¾öÈ¡ÓÚËüËùÔÚµÄĿ¼µÄÉèÖÃÒ»×é ¼£Ã£Ä££ª³£²¡½IDλÊÇ·ñ
ÉèÖá£Èç
¹û¸ÃĿ¼µÄÕâ
һλÒѾÉèÖã¬ÔòÐÂÎļþµÄ×éIDÉèÖÃΪĿ¼µÄ×éID£»·ñÔòÐÂÎļþ ×éIDÉèÖÃΪ½ø³Ì
µÄÓÐЧ×éI
D¡£ª¥
4ª±3+BSD×ÜÊÇʹÓÃĿ¼µÄ×éID×÷ΪÐÂÎļþµÄ×éID¡£ª¥
ÆäËüϵͳÔÊÐíÒÔÒ»¸öÎļþϵͳ×÷Ϊµ¥Î»ÔÚPOSIXª±1ËùÔÊÐíµÄÁ½ÖÖ·½·¨ÖÐÑ¡ÔñÒ»ÖÖ£¬
Ϊ´ËÔÚmo
unt(1)ÃüÁîÖÐʹÓÃÁËÒ»¸öÌØÊâ±êÖ¾¡£ª¥
FIPS £ü£µ£ü££±ÒªÇóÒ»¸öÐÂÎļþµÄ×éIDÊÇËüËùÔÚĿ¼µÄ×éID¡£ª¥
ʹÓÃPOSIXª±1ËùÔÊÐíµÄµÚ¶þÖÖ·½·¨(¼Ì³ÐĿ¼µÄ×éID)ʹµÃÔÚij¸öĿ¼Ï´´½¨µÄÎļþ
ºÍĿ¼¶¼
ÓиÃĿ¼µÄ×éID¡£ÓÚÊÇÎļþºÍĿ¼µÄ×éÊôÖ÷¹ØÏµ´Ó¸Ãµã¾ÍÏòÏ´«µÝ¡£ÀýÈ磬ÔÚ/va
r/spcolĿ
¼ÖоÍʹÓÃÕâÖÖ·½·¨¡£ª¥
ÕýÈçÇ°ÃæÌáµ½µÄ£¬ÕâÖÖÉèÖÃ×éÊôÖ÷¹ØÏµµÄ·½·¨¶Ô4ª±3+BSDÊÇϵͳĬÈϵ쬶ÔSVR4Ôò
ÊÇ¿ÉÑ¡Ôñ
µÄ¡£ÔÚSVR4֮ϣ¬ÎÒÃDZØÐëÉèÖÃÉèÖÃÒ»×é ¼£Ã£Ä££ª³£²¡½IDλ¡£¸ü½øÒ»²½£¬Îª¹©Õâ
ÖÖ·½·¨ÄÜ
¹»Õý³£¹¤×÷£¬
SVR4µÄmkdirº¯ÊýÒª×Ô¶¯µØ´«µÝÒ»¸öĿ¼µÄÉèÖÃÒ»×é ¼£Ã£Ä££ª³£²¡½IDλ¡£(ÔÚ4ª±
20½ÚÖÐÎÒ
Ãǽ«ËµÃ÷£¬mkdir¾ÍÊÇÕâÑù×öµÄ)¡£ª¤
4ª±7¡þaccessº¯Êýª¥
ÕýÈçÇ°ÃæËù˵Ã÷µÄ£¬µ±ÓÃopenº¯Êý´ò¿ªÒ»¸öÎļþʱ£¬ÏµÍ³ºËÒÔ½ø³ÌµÄÓÐЧÓû§IDºÍ
ÓÐЧ×éID
Ϊ»ù´¡Ö´ÐÐÆä´æÈ¡ÊýÏÞ²âÊÔ¡£ÓÐʱ£¬½ø³ÌҲϣÍû°´Æäʵ¼ÊÓû§IDºÍʵ¼Ê×éIDÀ´²âÊÔ
Æä´æÈ¡ÄÜ
Á¦¡£ÀýÈçµ±Ò»¸ö½ø³ÌʹÓÃÉèÖÃÒ»Óû§ ¼£Ã£Ä££ª³£²¡½ID£¬»òÉèÖÃÒ»×é ¼£Ã£Ä££ª³£²
¡½IDÌØÕ÷
×÷ΪÁíÒ»¸öÓû§(»ò×é)ÔËÐÐ
ʱ£¬Õâ¿ÉÄܾÍÊÇÐèÒªµÄ¡£¼´Ê¹Ò»¸ö½ø³Ì¿ÉÄÜÒѾÉèÖÃÒ»Óû§ ¼£Ã£Ä££ª³£²¡½IDΪ¸ù
£¬ËüÈÔ¿É
ÄÜÏëÑé֤ʵ¼Ê
Óû§ÄÜ·ñ´æÈ¡Ò»¸ö¸ø¶¨µÄÎļþ¡£accessº¯ÊýÊǰ´Êµ¼ÊÓû§IDºÍʵ¼Ê×éID½øÐдæÈ¡Êý
²âÊԵġ£
(¾¹ý4ª±5½Ú½áÊø²¿·ÖÖÐËùÊöµÄ4¸ö²½Ö裬µ«½«ÓÐЧ¸ÄΪʵ¼Ê¡£)ª¥
#include<unistdª±h>ª¥
int access(const char *ª«pathname,ª«int ª«modeª«);ª¥
·µ»Ø£ºÈô³É¹¦Îª0£¬³ö´íΪ££±ª¥
ÆäÖУ¬modeÊÇͼ4ª±5ÖÐËùÁг£ÊýµÄ°´Î»»ò¡£ª¤ª¤ª¤
ͼ4ª±5ª¤
ʵÀýª¥
³ÌÐò4ª±2ÏÔʾÁËaccessº¯ÊýµÄʹÓá£ÏÂÃæÊǸóÌÐòµÄһЩÔ˶¯½á¹û£ºª¥
$ ls -1 aª±outª¥
-rwxrwxr-x 1 stevens 105216 Jan 18 08:48 aª±outª¥
$ aª±out aª±outª¥
read access OKª¥
open for reading OKª¥
$ ls -1/etc/uucp/Systemsª¥
-rw-r----- 1 uucp 1441 Jul 18 15:05/etc/uucp/Systemsª¥
$ aª±out/etc/uucp/Systemsª¥
access error for/etc/uucp/Systems:Permission deniedª¥
open error for /etc/uucp/Systems:Permission deniedª¥
$ su¡þ³ÉΪ³¬¼¶Óû§ª¥
Password:ÊäÈ볬¼¶Óû§¿ÚÁ
# chown uucp aª±outª¥
# chkmod u+s aª±out½«ÎļþÓû§ID¸ÄΪuucp,´ò¿ªÉèÖÃÓû§ID몤ª¤ª¤
³ÌÐò4ª±2¡þaccessº¯ÊýµÄʵÀý¡£ª¥
ÔÚ±¾ÀýÖУ¬ÉèÖÃÒ»Óû§ ¼£Ã£Ä££ª³£²¡½ID³ÌÐò¿ÉÒÔÈ·¶¨Êµ¼ÊÓû§²»ÄܶÁij¸öÎļþ£¬
¶øopenº¯
ÊýÈ´ÄÜ´ò¿ª¸ÃÎļþ¡£ª¥
ÔÚÉÏÃæÀý×ÓÒÔ¼°ÔÚµÚ°ËÕÂÖУ¬ÎÒÃÇÓÐʱҪ³ÉΪ³¬¼¶Óû§£¬ÒÔ±ãÀýʾijЩ¹¦ÄÜÊÇÈçºÎ
¹¤×÷µÄ¡£
Èç¹ûÄãʹÓöàÓû§ÏµÍ³£¬µ«ÎÞ³¬¼¶Óû§Ðí¿ÉÊý£¬ÄÇôÄã¾Í²»ÄÜÍêÕûµØÖظ´ÕâЩʵÀý
¡£ª¤
4ª±8¡þumaskº¯Êýª¥
ÖÁ´ËÎÒÃÇÒÑ˵Ã÷ÁËÓëÿ¸öÎļþÏà¹ØÁªµÄ9¸ö´æÈ¡Êý룬ÔÚ´Ë»ù´¡ÉÏÎÒÃÇ¿ÉÒÔ˵Ã÷Óë
ÿ¸ö½ø³Ì
Ïà¹ØÁªµÄÎļþ·½Ê½´´½¨ÆÁ±Î×Ö¡£ª¥
umaskº¯ÊýΪ½ø³ÌÉèÖÃÎļþ·½Ê½´´½¨ÆÁ±Î×Ö£¬²¢·µ»ØÒÔǰµÄÖµ¡£9ÕâÊÇÉÙÊý¼¸¸öûÓÐ
³ö´í·µ»Ø
µÄº¯ÊýÖеÄÒ»¸ö¡£)ª¥
#include<sys/typesª±h>ª¥
#include<sys/statª±h>ª¥
mode ¼£Ã£Ä££ª³£²¡½t umask(mode ¼£Ã£Ä££ª³£²¡½t ª«cmask)ª«;ª¥
·µ»Ø£ºÒÔǰµÄÎļþ·½Ê½´´½¨ Á±Îª¤
ÆäÖУ¬²ÎÊýcmaskÊÇÓÉͼ4ª±4ÖеÄ9¸ö³£Êý(S ¼£Ã£Ä££ª³£²¡½IRUSR,S ¼£Ã£Ä££ª³£²
¡½IWUSRµÈ
)°´Î»»ò¹¹³ÉµÄ¡£ª¥
ÔÚ½ø³Ì´´½¨Ò»¸öÐÂÎļþ»òÒ»¸öÐÂĿ¼ʱ£¬¾ÍÒ»¶¨»áʹÓÃÎļþ·½Ê½´´½¨ÆÁ±Î×Ö¡£(»Ø
Òä3ª±3ºÍ3
ª±4½Ú£¬ÔÚÄÇÀïÎÒÃÇ˵Ã÷ÁËopenºÍcreatº¯Êý¡£ÕâÁ½¸öº¯Êý¶¼ÓÐÒ»¸ö²ÎÊýmode,ËüÖ¸
¶¨ÁËÐÂÎÄ
¼þµÄ´æÈ¡Ðí¿ÉÊýλ¡£)ÎÒÃǽ«ÔÚ4ª±20½Ú˵Ã÷ÈçºÎ´´½¨Ò»¸öÐÂĿ¼£¬ÔÚÎļþ·½Ê½´´½¨
ÆÁ±Î×ÖÖÐ
Ϊ1µÄ룬ÔÚÎļþmodeÖеÄÏàӦλÔòÒ»¶¨±»×ª³É0¡£ª¤
ʵÀýª¥
³ÌÐò4ª±3´´½¨ÁËÁ½¸öÎļþ£¬´´½¨µÚÒ»¸öʱ£¬umaskֵΪ0£¬´´½¨µÚ¶þ¸öʱ£¬umaskÖµ
½ûÖ¹ËùÓÐ
×éºÍÆäËü´æÈ¡Êý¡£ÈôÔËÐд˳ÌÐò¿ÉµÃÈçϽá¹û£¬´ÓÖпɼû´æÈ¡ÊýÊÇÈçºÎÉèÖõġ£ª¥
$ umask¡þµÚÒ»´Î´òÓ¡µ±Ç°Îļþ·½Ê½´´½¨ Á±Îª¥
02ª¥
$ aª±out-
4 ls -1 foo barª¥
-rw------- 1 stevens 0 Nov 16 16:23 barª¥
-rw -rw-rw- 1 stevens 0 Nov 16 16:23 fooª¥
$ umask¡þ¹Û²ìÎļþ·½Ê½´´½¨ÆÁ±ÎÊÇ·ñ¸ü¸Äª¥
02ª¤ª¤ª¤
³ÌÐò4ª±3¡þumaskº¯ÊýµÄʵÀýª¤
4ª±9¡þchmodºÍfchmodº¯Êýª¥
ÕâÁ½¸öº¯ÊýʹÎÒÃÇ¿ÉÒÔ¸ü¸ÄÏÖ´æÎļþµÄ´æÈ¡Ðí¿ÉÊý¡£ª¥
#include<sys/typesª±h>ª¥
#include<sys/statª±h>ª¥
int chmod(const char *ª«pathname,ª«mode ¼£Ã£Ä££ª³£²¡½t ª«mode);ª«ª¥
int fchmod(int ª«filedes,ª«mode ¼£Ã£Ä££ª³£²¡½t ª«mode);ª«ª¥
¶þ¸öº¯Êý·µ»Ø£ºÈô³É¹¦Îª0£¬³ö´íΪ-1ª¥
chmodº¯ÊýÔÚÖ¸¶¨µÄÎļþÉϽøÐвÙ×÷£¬¶øfchmodº¯ÊýÔò¶ÔÒÑ´ò¿ªµÄÎļþ½øÐвÙ×÷¡£
ª¥
fchmodº¯Êý²¢²»ÊÇPOSIXª±1µÄ×é³É²¿·Ö¡£ÕâÊÇSVR4ºÍ4ª±3+BSDµÄÀ©³ä²¿·Ö¡£ª¥
ΪÁ˸ıäÒ»¸öÎļþµÄÐí¿ÉÊý룬½ø³ÌµÄÓÐЧÓû§ID±ØÐëµÈÓÚÎļþµÄÊôÖ÷£¬»òÕ߸ýø
³Ì±ØÐë¾ß
Óг¬¼¶Óû§Ðí¿ÉÊý¡£ª¥
²ÎÊýmodeÊÇͼ4ª±6ÖÐËùʾ³£ÊýµÄijÖÖ°´Î»»ò¡£ª¤ª¤ª¤
ͼ4ª±6¡þchmodº¯ÊýµÄmode³£Êý(È¡×Ô<sys/statª±h>)ª¤
×¢Ò⣬ÔÚͼ4ª±6ÖУ¬ÓÐ9ÏîÊÇÈ¡×Ôͼ4ª±4ÖеÄ9¸öÎļþ´æÈ¡Ðí¿ÉÊýλ¡£ÎÒÃÇÁíÍâ¼ÓÉÏ
Á˶þλÉè
Öà ¼£Ã£Ä££ª³£²¡½ID³£Êý(S ¼£Ã£Ä££ª³£²¡½IS¡²UG¡³ID),±£´æ ¼£Ã£Ä££ª³£²¡ ÕýÎÄ
³£Êý(S¡¼
ãģ£ª³£²¡½ISVTX)£¬ÒÔ¼°Èý¸ö×éºÏ³£Êý(S ¼£Ã£Ä££ª³£²¡½IRWX¡²UGO¡³)
¡£(ÔÚÕâÀÎÒÃÇʹÓÃÁ˱ê×¼Unix×Ö·ûÀàËã·û ²¡þ¡ £¬±íʾ·½À¨ºÅËã·ûÖеÄÈκÎÒ»
¸ö×Ö·û¡£
ÀýÈ磬×îºóÒ»¸ö£¬S ¼£Ã£Ä££ª³£²¡½IRWX¡²UGO¡³±íʾÁËÈý¸ö³£Êý£ºS ¼£Ã£Ä££ª³£²
¡½IRWXU¡¢
S ¼£Ã£Ä££ª³£²¡½IRWXGºÍS ¼£Ã£Ä££ª³£²¡½IRWXO¡£ÕâÒ»×Ö·û
ÀàËã·ûÊÇ´ó¶àÊýUnix shellºÍºÜ¶à±ê×¼UnixÓ¦ÓóÌÐò¶¼ÌṩµÄÕý¹æ±í´ïʽµÄÒ»ÖÖÐÎ
ʽ¡£)ª¥
±£´æ ¼£Ã£Ä££ª³£²¡ ÕýÎÄλ(S ¼£Ã£Ä££ª³£²¡½ISVTX)²»ÊÇPOSIXª±1µÄÒ»²¿·Ö¡£ÎÒÃÇ
ÔÚÏÂÒ»½Ú
˵Ã÷ÆäÄ¿µÄ¡£ª¤
ʵÀýª¥
ÏÈ»ØÒäÒ»ÏÂΪÀýʾumaskº¯ÊýÎÒÃÇÔËÐгÌÐò4ª±3ʱ£¬ÎļþfooºÍbarµÄ×îºó״̬£ºª¥
$ ls-1 foo barª¥
-rw------- 1 stevens 0 Nov 16 16:23 barª¥
-rw-rw-rw- 1 stenens 0 Nov 16 16:23 fooª¥
³ÌÐò4ª±4ÐÞ¸ÄÁËÕâÁ½¸öÎļþµÄ·½Ê½¡£ÔÚÔËÐгÌÐò4ª±4ºó£¬ÎÒÃǼûµ½µÄÕâÁ½¸öÎļþµÄ
×îºó״̬
ÊÇ£ºª¥
$ ls -1 foo barª¥
-rw-r--r-- 1 stevens 0 Nov 16 16:23 barª¥
-rw-rwlrw- 1 stenens 0 Nov 16 16:23 fooª¥
ÔÚ´ËÀý×ÓÖУ¬ÎÒÃÇÏà¶ÔÓÚfooµÄµ±Ç°×´Ì¬ÉèÖÃÆäÐí¿ÉÊý¡£Îª´Ë£¬Ïȵ÷ÓÃstat»ñµÃÆä
µ±Ç°Ðí¿É
Êý£¬È»ºóÐÞ¸ÄËü¡£ÎÒÃÇÒÑÏÔʽµØ´ò¿ªÁËÉèÖÃÒ»×é ¼£Ã£Ä££ª³£²¡½IDλ¡¢¹Ø±ÕÁË×顼
ãģ£ª³
£²¡½Ö´ÐÐλ¡£¶ÔÆÕͨÎļþÕâÑù
×öµÄ½á¹ûÊǶԸÃÎļþ¿ÉÒÔ¼ÓÇ¿ÖÆÐÔ¼ÇÂ¼Ëø£¬ÎÒÃǽ«ÔÚ12ª±3½ÚÖÐÌÖÂÛÇ¿ÖÆÐÔËø¡£×¢
Ò⣬lsÃü
Á×é ¼£Ã£Ä££ª³£²¡ Ö´ÐÐÐí¿ÉÊý±íʾΪl£¬Ëü±íʾ¶Ô¸ÃÎļþ¿ÉÒÔ¼ÓÇ¿ÖÆÐÔ¼ÇÂ¼Ëø
¡£¶ÔÎļþb
ar£¬²»¹ÜÆäµ±Ç°Ðí¿ÉÊýλÈçºÎ£¬ÎÒÃǽ«ÆäÐí¿ÉÊýÉèÖÃΪһ¾ø¶ÔÖµ¡£ª¤ª¤ª¤
³ÌÐò4ª±4¡þchmodº¯ÊýµÄʵÀýª¥
×îºóҲҪעÒâµ½¡£ÔÚÎÒÃÇÔËÐгÌÐò4ª±4ºólsÃüÁîÁгöµÄʱ¼äºÍÈÕÆÚ²¢²»¸Ä±ä¡£ÔÚ4
ª±18½ÚÖÐ
£¬ÎÒÃÇ»áÁ˽⵽chmodº¯Êý¸üеÄÖ»ÊÇi-node×î½üÒ»´Î±»¸ü¸ÄµÄʱ¼ä¡£°´ÏµÍ³Ä¬ÈÏ
·½Ê½ls-l
ÁгöµÄÊÇ×îºóÐÞ¸ÄÎļþÄÚÈݵÄʱ¼ä¡£ª¥
chmodº¯ÊýÔÚÏÂÁÐÌõ¼þÏÂ×Ô¶¯Çå³ý2¸öÐí¿ÉÊýλ¡£ª¥
¡¤Èç¹ûÎÒÃÇÊÔͼÉèÖÃÆÕͨÎļþµÄճסλ(S ¼£Ã£Ä££ª³£²¡½ISVTX)£¬¶øÇÒÓÖûÓг¬¼¶
Óû§ÓÅÏÈ
Êý£¬ÄÇômode
ÖеÄճסλ×Ô¶¯±»¹Ø±Õ¡£(ÎÒÃǽ«ÔÚÏÂÒ»½Ú˵Ã÷ճסλ)¡£ÕâÒâζ×ÅÖ»Óг¬¼¶Óû§²Å
ÄÜÉèÖÃÆÕ
ͨÎļþµÄճסλ¡£ÕâÑù×öµÄÀíÓÉÊÇ¿ÉÒÔ·ÀÖ¹²»»³ºÃÒâµÄÓû§ÉèÖÃճڹ룬²¢ÊÔͼÒÔ
´Ë·½Ê½Ìî
Âú½»»»Çø(Èç¹ûϵͳ֧³Ö±£´æ ¼£Ã£Ä££ª³£²¡ ÕýÎÄÌØÕ÷µÄ»°)¡£ª¥
¡¤Ð´´½¨ÎļþµÄ×éID¿ÉÄܲ»Êǵ÷Óýø³ÌËùÊôµÄ×é¡£»ØÒäÒ»ÏÂ4ª±6½Ú£¬ÐÂÎļþµÄ×éI
D¿ÉÄÜÊǸ¸
Ŀ¼µÄ×éID¡£ÌØ±ðµØ£¬Èç¹ûÐÂÎļþµÄ×éID²»µÈÓÚ½ø³ÌµÄÓÐЧ×éID»òÕß½ø³ÌÌí¼Ó×éI
DÖеÄÒ»¸ö
£¬ÒÔ¼°½ø³ÌûÓг¬¼¶Óû§ÓÅÏÈÊý£¬ÄÇôÉèÖÃÒ»×é ¼£Ã£Ä££ª³£²¡½IDλ×Ô¶¯±»¹Ø±Õ¡£
Õâ¾Í·ÀÖ¹
ÁËÓû§´´½¨Ò»¸öÉèÖÃÒ»×é ¼£Ã£Ä££ª³£²¡½IDÎļþ£¬¶ø¸ÃÎļþÊÇÓɲ¢·Ç¸ÃÓû§ËùÊôµÄ
×éÓµÓеÄ
¡£ª¥
4ª±3+BSDºÍÆäËü±´¿ËÀ³µ¼³öµÄϵͳÔö¼ÓÁËÁíÍâµÄ°²È«ÐÔÌØÕ÷ÒÔÊÔͼ·ÀÖ¹±£»ñλµÄ´í
ÎóʹÓá£
Èç¹ûÒ»¸öûÓг¬¼¶Óû§ÓÅÏÈÊýµÄ½ø³Ìдһ¸öÎļþ£¬ÔòÉèÖÃÒ»Óû§ ¼£Ã£Ä££ª³£²¡½I
DλºÍÉèÖÃ
Ò»×é ¼£Ã£Ä££ª³£²¡½IDλ×Ô¶¯
±»Çå³ý¡£Èç¹ûÒ»¸ö²»»³ºÃÒâµÄÓû§ÕÒµ½Ò»¸öËû¿ÉÒÔдµÄÉèÖÃÒ»×é ¼£Ã£Ä££ª³£²¡½I
DºÍÉèÖÃÒ»
Óû§ ¼£Ã£Ä££ª³£²¡½IDÎļþ£¬¼´Ê¹Ëû¿ÉÒÔÐ޸ĴËÎļþ£¬µ«Ê§È¥Á˶ԸÃÎļþµÄÌØ±ðÓÅ
ÏÈÊý¡£ª¤
4ª±10¡þճס몥
S ¼£Ã£Ä££ª³£²¡½ISVTXλÓÐÒ»¶ÎÓÐȤµÄÀúÊ·¡£ÔÚUnixµÄÔçÆÚ°æ±¾£¬Õâһλ±»³ÆÖ®Îª
ճסλ¡£
Èç¹ûÒ»¸ö¿ÉÖ´
ÐгÌÐòÎļþµÄÕâһλ±»ÉèÖÃÁË£¬ÄÇôÔڸóÌÐòµÚÒ»´ÎÖ´Ðв¢½áÊøÊ±£¬¸Ã³ÌÐòÕýÎĵÄ
Ò»¸öÎı¾
±»±£´æÔÚ½»»»Çø¡£(³ÌÐòµÄÕýÎIJ¿·ÖÊÇ»úÆ÷Ö¸Á·Ö¡£)ÕâʹµÃÏ´ÎÖ´ÐиóÌÐòʱÄÜ
½Ï¿ìµØ½«
Æä×°ÈëÄÚ´æÇø¡£ÆäÔÒòÊÇ£ºÔÚ½»»»Çø£¬¸ÃÎļþÊDZ»Á¬Ðø´æ·ÅµÄ£¬¶øÔÚÒ»°ãµÄUnixÎÄ
¼þϵͳÖÐ
£¬ÎļþµÄ¸÷Êý¾Ý¿éºÜ¿ÉÄÜÊÇËæ»ú´æ·ÅµÄ¡£¶ÔÓÚ³£ÓõÄÓ¦ÓóÌÐò£¬ÀýÈçÎı¾±à¼³ÌÐò
ºÍ±à¼³Ì
ÐòµÄ¸÷²¿·Ö³£ÉèÖÃËüÃÇËùÔÚÎļþµÄճסλ¡£×ÔÈ»£¬¶Ô½»»»ÇøÖпÉÒÔͬʱ´æ·ÅµÄÉèÖÃ
ÁËճסλ
µÄÎļþÊýÓÐÒ»¶¨ÏÞÖÆ£¬ÒÔÃâ¹ý¶àÕ¼Óý»»»Çø¿Õ¼ä£¬µ«ÎÞÂÛÈçºÎÕâÊÇÒ»¸öÓÐÓõļ¼Êõ
¡£ÒòΪÔÚ
ϵͳÔÙ´Î×Ô²Ýǰ£¬ÎļþµÄÕýÎIJ¿·Ö×ÜÊÇÔÚ½»»»ÇøÖУ¬ËùÒÔʹÓÃÁËÃû×Ö"ճס"¡£ºóÀ´
µÄUnix
°æ±¾³ÆÖ®Îª±£´æ ¼£Ã£Ä££ª³£²¡ ÕýÎÄ룬Òò´ËÒ²¾ÍÓÐÁ˳£ÊýS ¼£Ã£Ä££ª³£²¡½ISVT
X¡£ÏÖ½ñ½Ï
еÄUnixϵͳ´ó¶àÊý¶¼¾ßÓÐÐé´æÏµÍ³£¬ÒÔ¼°¿ìËÙÎļþϵͳ£¬ËùÒÔ¿ÉÔÙÐèҪʹÓÃÕâÖÖ
¼¼Êõ¡£ª¥
ĿǰճסλµÄÖ÷Òª×÷ÓÃÊÇÕë¶ÔĿ¼ÎļþµÄ¡£Èç¹û¶ÔÒ»¸öĿ¼ÉèÖÃÁËճס룬ÔòÖ»ÓÐ
¶Ô¸ÃĿ¼
Îļþ¾ßÓÐдÐí¿ÉÊýµÄÓû§²¢ÇÒÂú×ãÏÂÁÐÌõ¼þÖ®Ò»£¬²ÅÄÜɾ³ý»ò»»Ãû¸ÃĿ¼ÏµÄÎļþ
£ºª¥
¡¤ÓµÓдËÎļþª¥
¡¤ÓµÓдËĿ¼£¬»òÕߪ¥
¡¤Êdz¬¼¶Óû§ª¥
Ŀ¼/tmpºÍ/var/spool/uucppublicÊÇÉèÖÃճסλµÄºóÑ¡Õß-ÕâÁ½¸öĿ¼ÊÇÈκÎÓû§
¶¼¿ÉÔÚ
ÆäÖд´½¨ÎļþµÄĿ¼¡£ÕâÁ½¸öĿ¼¶ÔÈÎÒ»Óû§(Óû§¡¢×éºÍÆäËû)µÄÐí¿ÉÊýͨ³£¶¼ÊÇ
¶Á¡¢Ð´ºÍ
Ö´ÐС£µ«ÊÇÓû§²»Ó¦ÄÜɾ³ý»ò»»ÃûÊôÓÚÆäËûÈ˵ÄÎļþ£¬Îª´ËÔÚÕâÁ½¸öĿ¼µÄÎļþ·½
ʽÖж¼Éè
ÖÃÁËճסλ¡£ª¥
POSIXª±1ûÓж¨Òåճסλ¡£µ«SVR4ºÍ4ª±3+BSDÔòÖ§³ÖÕâÖÖÌØÕ÷¡£ª¤
4ª±11¡þchown,fchownºÍlchownº¯Êýª¥
chownº¯Êý¿ÉÓÃÓÚ¸ü¸ÄÎļþµÄÓû§IDºÍ×éID¡£ª¥
#include<sys/typesª±h>ª¥
#include<unistdª±h>ª¥
int chown(const char *ª«pathname,ª«uid ¼£Ã£Ä££ª³£²¡½t ª«ownerª«,gid¡¼£Ã
Ä££ª³£²
¡½tª« group);ª«ª¥
int fchown(int ª«filedes,ª«uid ¼£Ã£Ä££ª³£²¡½t ª«owner,ª«gid ¼£Ã£Ä££ª³£²
¡½t ª«gro
up);ª«ª¥
int lchown(const char *ª«pathname,ª«uid ¼£Ã£Ä££ª³£²¡½t ª«owner,ª«gid¡¼£Ã
Ä££ª³£²
¡½t ª«group);ª«ª¥
Èý¸öº¯ÊýµÄ·µ»Ø£ºÈô³É¹¦Îª0£¬³ö´íΪ-1ª¥
³ýÁËËùÒýÓõÄÎļþÊǸö·ûºÅÁ¬½ÓÒÔÍ⣬ÕâÈý¸öº¯ÊýµÄ²Ù×÷ÏàÀàËÆ¡£ÔÚ·ûºÅÁ¬½ÓÇé¿ö
Ï£¬lcho
wn¸ü¸Ä·ûºÅÁ¬½Ó±¾ÉíµÄÊôÖ÷£¬¶ø²»ÊǸ÷ûºÅÁ¬½ÓËùÖ¸ÏòÎļþµÄÊôÖ÷¡£ª¥
fchownº¯Êý²¢²»ÔÚPOSIX 1003ª±1-1990±ê×¼ÖУ¬µ«ºÜ¿ÉÄܱ»¼Óµ½1003ª±1a£¬SVR4ºÍ
4ª±3+BS
DÔòÖ§³Öfchown¡£ª¥
Ö»ÓÐSVR4Ö§³Ölchownº¯Êý¡£ÔÚ·ÇSVR4ϵͳÖÐ(POSIXª±1ºÍ4ª±3+BSD)£¬ÈôchownµÄ²Î
Êýpathnam
eÊÇ·ûºÅÁ¬½Ó£¬Ôò¸Ä±ä¸Ã·ûºÅÁ¬½ÓµÄÊôÖ÷¹ØÏµ£¬¶ø²»¸Ä±äËüËùÖ¸ÏòµÄÎļþµÄÊôÖ÷¹Ø
ϵ¡£ÎªÁË
¸ü¸Ä¸Ã·ûºÅÁ¬½ÓËùÖ¸ÏòµÄÎļþµÄÊôÖ÷¹ØÏµ£¬ÎÒÃÇÓ¦Ö¸¶¨¸Ãʵ¼ÊÎļþ±¾ÉíµÄpathnam
e,¶ø²»ÊÇ
Ö¸Ïò¸ÃÎļþµÄÁ¬½ÓÎļþµÄpathname¡£ª¥
SVR4£¬4ª±3+BSDºÍXPG3ÔÊÐíÎÒÃǽ«²ÎÊýowner»ògroupÖ¸¶¨Îª-1,ÒÔ±íʾ²»¸Ä±äÏàÓ¦
µÄID¡£Õâ
²»ÊÇPOSIXª±1µÄÒ»²¿·Ö¡£ª¥
»ùÓÚ±´¿ËÀ³µÄϵͳһֱ¹æ¶¨Ö»Óг¬¼¶Óû§²ÅÄܸü¸ÄÒ»¸öÎļþµÄÊôÖ÷¡£ÕâÑù×öµÄÔÒò
ÊÇ·ÀÖ¹ÓÃ
»§¸Ä±äÆäÎļþµÄÊôÖ÷´Ó¶ø°ÚÍÑÅ̿ռäÏÞ¶î¶ÔËûÃǵÄÏÞÖÆ¡£µ«ÊÇ£¬ÏµÍ³VÔòÔÊÐíÈÎÒ»
Óû§¸ü¸Ä
ËûÃÇËùÓµÓеÄÎļþµÄÊôÖ÷¡£ª¥
°´ÕÕ ¼£Ã£Ä££ª³£²¡½POSIX ¼£Ã£Ä££ª³£²¡½CHOWN ¼£Ã£Ä££ª³£²¡½RESTRICTEDµÄÖµ£¬
POSIXª±1
ÔÚÕâÁ½ÖÖÐÎʽµÄ²Ù×÷ÖÐÑ¡ÓÃÒ»ÖÖ¡£FIPS £ü µ£ü¡¼£Ã£Ä££ª³£²¡½1ÒªÇó ¼£Ã£Ä££ª³£²
¡½POSIX
¼£Ã£Ä££ª³£²¡½CHOWN ¼£Ã£Ä££ª³£²¡½RESTRICTED¡£ª¥
¶ÔÓÚSVR4£¬´Ë¹¦ÄÜÊǸöÅäÖÿÉÑ¡ÔñÏ¶ø4ª±3£«BSDÔò×ܶÔchownÊ©¼ÓÁËÏÞÖÆ¡£ª¥
»ØÒäͼ2ª±5£¬¸Ã³£Êý¿ÉÑ¡µØ¶¨ÒåÔÚÍ·Îļþ<unistdª±h>ÖУ¬¶øÇÒ×ÜÊÇ¿ÉÒÔÓÃpathco
nf»òfpath
confº¯Êý²éѯ¡£´Ë¿ÉÑ¡ÏÓëËùÒýÓõÄÎļþÓйØ-¿ÉÔÚÿ¸öÎļþϵͳ»ù´¡ÉÏ£¬Ê¹¸Ã
ÈÎÑ¡ÏîÆð
×÷Óûò²»Æð×÷Óá£ÔÚÏÂÎÄÖУ¬ÎÒÃÇÈçÌá¼°"Èô ¼£Ã£Ä££ª³£²¡½POSIX ¼£Ã£Ä££ª³£²¡½
CHOWN¡¼
ãģ£ª³£²¡½RESTRICTEDÆð×÷ÓÃ"£¬Ôò±íʾ
ÕâÊÊÓÃÓÚÎÒÃÇÕýÔÚ̸¼°µÄÎļþ£¬¶ø²»¹Ü¸Ãʵ¼Ê³£ÊýÊÇ·ñÔÚÍ·ÎļþÖж¨Òå¡£(ÀýÈ磬
4ª±3+BSD
×ÜÓÐÕâÖÖÏÞÖÆ£¬¶ø²¢²»ÔÚÍ·ÎļþÖж¨Òå´Ë³£Êý¡£)ª¥
Èô ¼£Ã£Ä££ª³£²¡½POSIX ¼£Ã£Ä££ª³£²¡½CHOWN ¼£Ã£Ä££ª³£²¡½RESTRICTED¶ÔÖ¸¶¨µÄ
ÎļþÆð×÷
Óã¬Ôòª¥
1ª±Ö»Óг¬¼¶Óû§½ø³ÌÄܸü¸Ä¸ÃÎļþµÄÓû§ID¡£ª¥
2ª±ÈôÂú×ãÏÂÁÐÌõ¼þ£¬Ò»¸ö·Ç³¬¼¶Óû§½ø³Ì¿ÉÒÔ¸ü¸Ä¸ÃÎļþµÄ×éID£ºª¥
aª±½ø³ÌÓµÓдËÎļþ(ÆäÓÐЧÓû§IDµÈÓÚ¸ÃÎļþµÄÓû§ID)£¬ÒÔ¼°ª¥
bª±²ÎÊýownerµÈÓÚÎļþµÄÓû§ ¼£Ã£Ä££ª³£²¡½ID£¬²ÎÊýgroupµÈÓÚ½ø³ÌµÄÓÐЧ×éID
»ò½ø³ÌµÄ
Ìí¼Ó×éIDÖ®Ò»¡£ª¤
ÕâÒâζ×Å£¬µ± ¼£Ã£Ä££ª³£²¡½POSIX ¼£Ã£Ä££ª³£²¡½CHOWN ¼£Ã£Ä££ª³£²¡½RESTRIC
TEDÓÐЧʱ
£¬Äã²»Äܸü¸ÄÆä
ËûÓû§µÄÎļþµÄÓû§ID¡£Äã¿ÉÒÔ¸üÈëÄãËùÓµÓõÄÎļþµÄ×éID£¬µ«Ö»Äܸĵ½ÄãËùÊôÓÚ
µÄ×é¡£ª¥
Èç¹ûÕâЩº¯ÊýÓɷdz¬¼¶Óû§½ø³Ìµ÷Óã¬ÔòÔڳɹ¦·µ»ØÊ±£¬¸ÃÎļþµÄÉèÖÃÒ»Óû§¡¼£Ã
Ä££ª³£²
¡½IDλºÍÉèÖÃÒ»×é ¼£Ã£Ä££ª³£²¡½IDλ¶¼±»Çå³ý¡£ª¤
4ª±12¡þÎļþ³¤¶Èª¥
stat½á¹¹µÄ³ÉÔ±st ¼£Ã£Ä££ª³£²¡½sige°üº¬ÁËÒÔ×Ö½ÚΪµ¥Î»µÄ¸ÃÎļþµÄ³¤¶È¡£´Ë×Ö
¶ÎÖ»¶ÔÆÕ
ͨÎļþ¡¢Ä¿Â¼ÎļþºÍ·ûºÅÁ¬½Ó²ÅÊÇÓÐÒâÒåµÄ¡£ª¥
SVR4¶Ô¹ÜµÀÒ²¶¨ÒåÁËÎļþ³¤¶È£¬Ëü±íʾ¿É´Ó¸Ã¹ÜµÀÖжÁµ½µÄ×Ö½ÚÊý£¬ÎÒÃǽ«ÔÚ14ª±
2ÖÐÌÖÂÛ
¹ÜµÀ¡£ª¥
¶ÔÓÚÆÕͨÎļþ£¬ÆäÎļþ³¤¶È¿ÉÒÔÊÇ0£¬ÔÚ¶ÁÕâÖÖÎļþʱ£¬½«µÃµ½Îļþ½áÊøÖ¸Ê¾¡£ª¥
¶ÔÓÚĿ¼£¬Îļþ³¤¶Èͨ³£ÊÇÒ»¸öÊý£¬ÀýÈç16»ò512µÄÕû±¶Êý£¬ÎÒÃǽ«ÔÚ4ª±21½ÚÖÐ˵
Ã÷¶ÁĿ¼
²Ù×÷¡£ª¥
¶ÔÓÚ·ûºÅÁ¬½Ó£¬Îļþ³¤¶ÈÊÇÔÚÎļþÃûÖеÄʵ¼Ê×Ö½ÚÊý¡£ÀýÈ磬ª¤
lrwxrwxrwx 1 root 7 Sep 25 07:14 lib->usr/libª¤
ÆäÖУ¬Îļþ³¤¶È7¾ÍÊÇ·¾¶Ãûusr/libµÄ³¤¶È¡£(×¢Ò⣬ÒòΪ·ûºÅÁ¬½ÓÎļþ³¤¶È×ÜÊÇ
ÓÉst¡¼£Ã
Ä££ª³£²¡½sigeָʾ£¬ËùÒÔ·ûºÅÁ¬½Ó²¢²»°üº¬Í¨³£CÓïÑÔÓÃ×÷Ãû×Ö½áβµÄnull×Ö·û
¡£)ª¥
SVR4ºÍ4ª±3+BSDÒ²Ìṩ×Ö¶Îst ¼£Ã£Ä££ª³£²¡½blksigeºÍst ¼£Ã£Ä££ª³£²¡½blocks
¡£µÚÒ»¸ö
ÊǶÔÎļþI/O½ÏºÃµÄ¿é³¤¶È£¬µÚ
¶þ¸öÊÇËù·ÖÅäµÄʵ¼Ê512×Ö½Ú¿é¿éÊý¡£»ØÒäÒ»ÏÂ3ª±9½Ú£¬ÆäÖÐÌáµ½Á˵±ÎÒÃǽ«st¡¼
ãģ£ª³
£²¡½blksigeÓÃ
ÓÚ¶Á²Ù×÷ʱ£¬¶ÁÒ»¸öÎļþËùÐèµÄ×îÉÙʱ¼äÁ¿¡£ÎªÁËЧÂʵÄÔµ¹Ê£¬±ê×¼I/O¿â(ÎÒÃǽ«
ÔÚµÚÎåÕÂ
ÖÐ˵Ã÷)Ò²ÊÔͼһ´Î¶Á¡¢Ð´st ¼£Ã£Ä££ª³£²¡½blksige×Ö½Ú¡£ª¥
ÒªÖªµÀ£¬²»Í¬µÄUnix°æ±¾Æäst-blocksËùÓõĵ¥Î»¿ÉÄܲ»ÊÇ512-×ֽڿ顣ʹÓôËÖµ
²¢²»ÊÇ¿É
ÒÆÖ²µÄ¡£ª¤
ÎļþÖеĿն´ª¥
ÔÚ3ª±6½ÚÖУ¬ÎÒÃÇÌá¼°ÆÕͨÎļþ¿ÉÒÔ°üº¬"¿Õ¶´"¡£ÔÚ³ÌÐò3ª±2ÖÐÀýʾÁËÕâÒ»µã¡£¿Õ
¶´ÊÇÓÉ
³¬¹ýÎļþ½áβ¶ËµÄÎ»ÒÆÁ¿ÉèÖ㬲¢Ð´ÁËijЩÊý¾ÝºóÔì³ÉµÄ¡£×÷Ϊһ¸öÀý×Ó£¬¿¼ÂÇÏÂ
ÁÐÇé¿ö£º
ª¥
$ ls -1 coreª¥
-rw-r--r-- 1 stevens 8483248 Nov 18 12:18 coreª¥
$ du -s coreª¥
272 coreª¤
ÎļþcoreµÄ³¤¶È³¬¹ý8Õ××Ö½Ú£¬¶øduÃüÁîÔò±¨¸æ¸ÃÎļþËùʹÓõÄÅ̿ռä×ÜÁ¿ÊÇ272¸ö
512×Ö½Ú
¿é(139£¬264×Ö½Ú)¡£(Ôںܶ౴¿ËÀ³ÀàµÄϵͳÉÏ£¬duÃüÁ¸æ1024×Ö½Ú¿é¿éÊý£»SV
R4Ôò±¨¸æ5
12-×Ö½Ú¿é¿éÊý¡£)ºÜÃ÷ÏÔ£¬´ËÎļþÓкܶà¿Õ¶´¡£ª¥
ÕýÈçÎÒÃÇÔÚ3ª±6½ÚÖÐÌá¼°µÄ£¬readº¯Êý¶ÔÓÚûÓÐд¹ýµÄ×Ö½ÚλÖöÁµ½µÄÊý¾Ý×Ö½ÚÊÇ
0¡£Èç¹û
ÎÒÃÇÖ´ÐУºª¥
$ wc -c coreª¥
8483248 coreª¤
´Ó´Ë¿É¼û£¬Õý³£µÄI/O²Ù×÷¶ÁÖÁÕû¸öÎļþ³¤¶È¡£´ø-cÑ¡ÔñÏîµÄ(wc(1)ÃüÁî¼ÆËãÎļþ
ÖеÄ×Ö·û(
×Ö½Ú)Êý¡£)ª¥
Èç¹ûÎÒÃÇʹÓù«ÓóÌÐò£¬ÀýÈçcat,¸´ÖÆÕâÖÖÎļþ£¬ÄÇôËùÓÐÕâЩ¿Õ¶´¶¼±»Ð´³Éʵ¼Ê
Êý¾Ý×Ö½Ú
0¡£ª¥
$ cat core>coreª±copyª¥
$ ls -1 core*ª¥
-rw-r--r-- 1 stevens 8483248 Nov 18 12:18 coreª¥
-rw-rw-r-- 1 stevens 8483248 Nov 18 12:27 coreª±copyª¥
$ du -s core*ª¥
272 coreª¥
16592 coreª±copyª¤
´ÓÖпɼû£¬ÐÂÎļþËùÓõÄ×Ö½ÚÊýÊÇ8£¬495£¬104(512¡Á£±£¶£¬£µ£¹£²£©¡£´Ë³¤¶ÈÓë
lsÃüÁ
¸æµÄ³¤¶ÈÖ®¼äµÄ²î±ðÊÇÓÉÓÚÎļþϵͳʹÓÃÁËÈô¸É¿éÒÔ±£³ÖÖ¸Ïòʵ¼ÊÊý¾Ý¿éµÄ¸÷Ö¸Õë
¡£ª¥
ÓÐÐËȤµÄ¶ÁÕßÓ¦µ±²ÎÔÄBach¡²£±£¹ ¸£¶¡ µÄ4ª±2½ÚºÍLeffler¡²1989¡³µÄ7ª±2½Ú£¬
ÒÔ¸üÏêϸ
µØÁ˽âÎļþµÄÎïÀí°²ÅÅ¡£ª¤
4ª±13¡þÎļþ½Ø¶Ìª¥
ÓÐʱÎÒÃÇÐèÒªÔÚÎļþβ¶Ë´¦½ØÈ¥Ò»Ð©Êý¾ÝÒÔËõ¶ÌÎļþ¡£½«Ò»¸öÎļþµÄ³¤¶È½Ø¶ÌΪ0
ÊÇÒ»¸öÌØ
Àý£¬ÔÚopenÒ»¸öÎļþʱָ¶¨O ¼£Ã£Ä££ª³£²¡½TRUNC±êÖ¾¾Í¿ÉÒÔ×öµ½ÕâÒ»µã¡£ÎªÁ˽Ø
¶ÌÎļþ¿É
ÒÔʹÓÃϵͳµ÷Óú¯ÊýtruncateºÍftruncate¡£ª¥
#include<sys/typesª±h>ª¥
#include<unistdª±h>ª¥
int truncate(const char *ª«pathname,ª«off ¼£Ã£Ä££ª³£²¡½t ª«length);ª«ª¥
int ftruncate(int ª«filedes,ª«off ¼£Ã£Ä££ª³£²¡½t ª«length);ª«ª¥
Á½¸öº¯ÊýµÄ·µ»Ø£»Èô³É¹¦Îª0£¬³ö´íΪ££±ª¤
ÕâÁ½¸öº¯Êý½«ÓÉ·¾¶Ãûpathname»ò´ò¿ªÎļþÃèÊö·ûfiledesÖ¸¶¨µÄÒ»¸öÏÖ´æÎļþµÄ
³¤¶È½Ø¶Ì
Ϊlength¡£Èç¹û¸ÃÎļþÒÔǰµÄ³¤¶È´óÓÚLength,Ôò³¬¹ýLengthÒÔÍâµÄÊý¾Ý¾Í²»ÔÙÄÜ
´æÈ¡¡£Èç
¹ûÒÔǰµÄ³¤¶È¶ÌÓÚLength£¬ÔòÆäºó¹ûÓëϵͳÓйء£Èç¹ûij¸öʵÏֵĴ¦ÀíÊÇÀ©Õ¹¸ÃÎÄ
¼þ£¬ÔòÔÚ
ÒÔǰµÄÎļþβ¶ËºÍеÄÎļþβ¶ËÖ®¼äµÄÊý¾Ý½«¶Á×÷Ϊ0(Ò²¾ÍÊÇÔÚÎļþÖд´½¨ÁËÒ»¸ö
¿Õ¶´)¡£
ª¥
SVR4ºÍ4ª±3+BSDÌṩÁËÕâÁ½¸öº¯Êý¡£ËüÃDz»ÊÇPOSIXª±1»òXPG3µÄ×é³É²¿·Ö¡£ª¥
SVR4½Ø¶Ì»òÀ©Õ¹Ò»¸öÎļþ¡£4ª±3+BSDÖ»ÓÃÕâÈý¸öº¯Êý½Ø¶ÌÒ»¸öÎļþ-²»ÄÜÓÃËüÃÇÀ©
Õ¹Ò»¸öÎÄ
¼þ¡£ª¥
Unix´ÓÀ´¾ÍûÓнضÌÎļþµÄÒ»ÖÖ±ê×¼·½·¨¡£ÍêÈ«¼æÈݵÄÓ¦ÓóÌÐò±ØÐë¶ÔÎļþÖÆ×÷Ò»
¸ö¸±±¾£¬
ÔÚÖÆ×÷Ëüʱֻ¸´ÖÆËùÏ£ÍûµÄÊý¾Ý×Ö½Ú¡£ª¥
SVR4µÄfcntlÖÐÓÐÒ»¸öPOSIXª±1ûÓй涨µÄÃüÁîF ¼£Ã£Ä££ª³£²¡½FREESP,ËüÔÊÐíÊÍ
·ÅÒ»¸öÎÄ
¼þÖеÄÈκÎÒ»²¿·Ö£¬¶ø²»Ö»ÊÇÎļþβ¶Ë´¦µÄÒ»²¿·Ö¡£ª¥
ÔÚ³ÌÐò12ª±5ÖУ¬ÎÒÃÇʹÓÃÁËftruncateº¯Êý£¬ÒÔ±ãÔÚ»ñµÃ¶Ô¸ÃÎļþµÄËøºó£¬Ê¹Ò»¸ö
Îļþ±äÍê
¡£ª¤
4ª±14¡þÎļþϵͳª¥
ΪÁË˵Ã÷ÎļþÁ¬½ÓµÄ¸ÅÄÏÈÒª¶ÔÎļþϵͳµÄ½á¹¹Óлù±¾Á˽⡣ͬʱ£¬Á˽âi¡¼£Ã
Ä££ª³£²
¡½nodeºÍÖ¸ÏòÒ»¸öi ¼£Ã£Ä££ª³£²¡½nodeµÄĿ¼ÏîÖ®¼äµÄÇø±ðÒ²ÊǺÜÓÐÒæµÄ¡£ª¥
ÏÖÔÚ£¬ÓкܶàUnixÎļþϵͳµÄʵÏÖ¡£ÀýÈ磬SVR4Ö§³ÖÁ½ÖÖ²»Í¬ÀàÐ͵ÄÅÌÎļþϵͳ£º
´«Í³µÄUn
ixϵͳVÎļþϵͳ(³ÆÎª55)£¬ÒÔ¼°Í³Ò»Îļþϵͳ(³ÆÎªUFS)¡£ÔÚͼ2ª±6ÖУ¬ÎÒÃÇÒÑ¿´
µ½ÁËÕâÁ½
ÖÖÎļþϵͳµÄÒ»¸öÇø±ð¡£UFSÊÇÒÔ±´¿ËÀ³¿ìËÙÎļþϵͳΪ»ù´¡µÄ¡£SVR4Ò²Ö§³ÖÁíÍâ
һЩ·Ç´Å
ÅÌÎļþϵͳ£¬Á½¸ö·Ö²¼Ê½Îļþϵͳ£¬ÒÔ¼°Ò»¸ö×Ô¾ÙÎļþϵͳ£¬ÕâЩÎļþϵͳ¶¼²»Ó°
ÏìÏÂÃæµÄ
ÌÖÂÛ¡£±¾½ÚÌÖÂÛ´«Í³µÄUnixϵͳVÎļþϵͳ¡£ÕâÖÖÀàÐ͵ÄÎļþϵͳ¿ÉÒÔ»ØËݵ½Vers
ion7¡£ª¥
ÎÒÃÇ¿ÉÒÔ°ÑÒ»¸öÅÌÇý·Ö³ÉÒ»¸ö»ò¶à¸ö·ÖÇø¡£Èçͼ4ª±7ÖÐËùʾ£¬Ã¿¸ö·ÖÇø¿ÉÒÔ°üº¬Ò»
¸öÎļþϵ
ͳ¡£ª¤ª¤ª¤
ͼ4ª±7¡þÅÌÇý£¬·ÖÇøºÍÎļþϵͳª¥
i ¼£Ã£Ä££ª³£²¡½nodeÊǹ̶¨³¤¶ÈµÄ¼Ç¼ÏËü°üº¬ÓйØÎļþµÄÐÅÏ¢¡£ª¥
ÔÚVersion 7ÖУ¬Ò»¸öi ¼£Ã£Ä££ª³£²¡½nodeÕ¼ÓÃ64×Ö½Ú£¬ÔÚ4ª±3+BSDÖУ¬Ò»¸öi¡¼
ãģ£ª³
£²¡½nodeÕ¼ÓÃ128×Ö½Ú¡£ÔÚSVR4
ÖУ¬ÔÚ´ÅÅÌÉÏÒ»¸öi ¼£Ã£Ä££ª³£²¡½nodeµÄ³¤¶ÈÓëÎļþϵͳµÄÀàÐÍÓйأºÒ»¸öS5 i
¼£Ã£Ä££
ª³£²¡½nodeÕ¼ÓÃ64×Ö½Ú£¬¶øUFS i ¼£Ã£Ä££ª³£²¡½nodeÕ¼ÓÃ128×Ö½Ú¡£ª¥
Èç¹ûÔÚºöÂÔ×Ô¾Ù¿éºÍ³¬¼¶¿éÇé¿öÏ£¬¸üϸ×еع۲ìÎļþϵͳ£¬Ôò¿ÉÒԵõ½Í¼4ª±8ÖÐ
ËùʾµÄÇé
¿ö¡£ª¤ª¤ª¤
ͼ4ª±8¡þ½ÏÏêϸµÄÎļþϵͳª¥
×¢Òâͼ4ª±8ÖеÄÏÂÁи÷µã£ºª¥
¡¤ÔÚͼÖÐÓÐÁ½¸öĿ¼ÏîÖ¸Ïòͬһi ¼£Ã£Ä££ª³£²¡½node¡£Ã¿¸öi ¼£Ã£Ä££ª³£²¡½nod
eÖж¼ÓÐÒ»
¸öÁ¬½Ó¼ÆÊý£¬ÆäÖµÊÇÖ¸Ïò¸Ãi ¼£Ã£Ä££ª³£²¡½
nodeµÄĿ¼ÏîÊý¡£Ö»Óе±Á¬½Ó¼ÆÊý¼õÉÙΪ0ʱ£¬²Å¿Éɾ³ý¸ÃÎļþ(Ò²¾ÍÊÇ¿ÉÒÔÊͷŸÃ
ÎļþÕ¼ÓÃ
µÄÊý¾Ý¿é)¡£Õâ¾ÍÊÇΪʲô"½â³ý¶ÔÒ»¸öÎļþµÄÁ¬½Ó"²Ù×÷²¢²»×ÜÊÇÒâζ×Å"ÊͷŸÃÎÄ
¼þÕ¼
ÓõÄÅÌ¿é"µÄÔÒò¡£ÕâÒ²¾ÍÊÇΪʲôɾ³ýÒ»¸öĿ¼ÏîµÄº¯Êý±»³ÆÖ®Îªunlink¶ø²»ÊÇ
ɾ³ýµÄÔ
Òò¡£ÔÚstat½á¹¹ÖУ¬Á¬½Ó¼ÆÊý°üº¬ÔÚst ¼£Ã£Ä££ª³£²¡½nlink³ÉÔ±ÖУ¬Æä»ù±¾ÏµÍ³
Êý¾ÝÀàÐÍ
ÊÇnlonk ¼£Ã£Ä££ª³£²¡½t¡£Õâ
ÖÖÁ¬½ÓÀàÐͳÆÖ®ÎªÓ²Á¬½Ó¡£»ØÒäͼ2ª±7£¬ÆäÖУ¬POSIXª±1³£ÊýLINK ¼£Ã£Ä££ª³£²¡½
MAXÖ¸¶¨
ÁËÒ»¸öÎļþÁ¬½ÓÊýµÄ×î´óÖµ¡£ª¥
¡¤ÁíÍâÒ»ÖÖÁ¬½ÓÀàÐͳÆÖ®Îª·ûºÅÁ¬½Ó¡£¶ÔÓÚÕâÖÖÁ¬½Ó£¬¸ÃÎļþµÄʵ¼ÊÄÚÈÝ(ÔÚÊý¾Ý
¿éÖÐ)°üº¬
Á˸÷ûºÅÁ¬½ÓËùÖ¸ÏòµÄÎļþµÄÃû×Ö¡£ÔÚÏÂÁÐÀý×ÓÖУºª¥
lrwxrwxrwx 1 root 7 sep 25 07:14 lib->urs/libª¥
ÔÚ¸ÃĿ¼ÏîÖеÄÎļþÃûÊÇlib£¬¶øÔÚ¸ÃÎļþÖаüº¬ÁË7¸öÊý¾Ý×Ö½Úusr/lib¡£ÔÚ¸Ãi¡¼
ãģ£ª³
£²¡½nodeÖеÄÎļþÀàÐÍÊÇS ¼£Ã£Ä££ª³£²¡½IFLNK£¬ÓÚÊÇϵͳ֪µÀÕâÊÇÒ»¸ö·ûºÅÁ¬½Ó
¡£ª¥
¡¤i ¼£Ã£Ä££ª³£²¡½node°üº¬ÁËËùÓÐÓëÎļþÓйصÄÐÅÏ¢£ºÎļþÀàÐÍ£¬Îļþ´æÈ¡Ðí¿É
Êý룬ÎÄ
¼þ³¤¶È£¬Ö¸Ïò¸Ã
ÎļþËùÕ¼ÓõÄÊý¾Ý¿éµÄÖ¸ÕëµÈµÈ¡£stat½á¹¹ÖеĴó¶àÊýÐÅÏ¢¶¼È¡×Ôi ¼£Ã£Ä££ª³£²
¡½node¡£
Ö»ÓÐ
¶þÏîÊý¾Ý´æ·ÅÔÚĿ¼ÏîÖУºÎļþÃûºÍi ¼£Ã£Ä££ª³£²¡½node±àºÅÊý¡£i ¼£Ã£Ä££ª³£²
¡½node±à
ºÅÊýµÄÊý¾ÝÀàÐÍÊÇino ¼£Ã£Ä££ª³£²¡½t¡£ª¥
¡¤ÒòΪÔÚĿ¼ÏîÖеÄi ¼£Ã£Ä££ª³£²¡½node±àºÅÊýÖ¸ÏòͬһÎļþϵͳÖеÄÒ»¸öi¡¼£Ã
Ä££ª³£²
¡½node£¬ËùÒÔÎÒÃDz»ÄÜʹһ¸ö
Ŀ¼ÏîÖ¸ÏòÁíÒ»¸öÎļþϵͳµÄi ¼£Ã£Ä££ª³£²¡½node¡£Õâ¾ÍÊÇΪʲôln(1)ÃüÁî(¹¹ÔìÒ»
¸öÖ¸ÏòÒ»¸öÏÖ´æÎļþµÄÐÂĿ¼Ïî)£¬²»ÄÜ¿çÔ½ÎļþϵͳµÄÔÒò¡£ÎÒÃǽ«ÔÚÏÂÒ»½Ú˵Ã÷
linkº¯Êý¡£ª¥
¡¤µ±²»¸ü¸ÄÎļþϵͳÇé¿öÏÂΪһ¸öÎļþ¸Ä»»Ãû×Öʱ£¬¸ÃÎļþµÄʵ¼ÊÄÚÈݲ¢Î´Òƶ¯
£¬ÐèÒª×öµÄ
Êǹ¹ÔìÒ»¸öÖ¸ÏòÏÖ´æi ¼£Ã£Ä££ª³£²¡½nodeµÄÐÂĿ¼Ï²¢³ýÈ¥ÀϵÄĿ¼Ïî¡£ÀýÈç
£¬Îª½«ÎÄ
¼þ/usr/lib/fo
o»»ÃûΪ/usr/foo£¬Èç¹ûĿ¼/usr/libºÍ/usrÔÚͬһÎļþϵͳÉÏ£¬ÔòÎļþfooµÄÄÚÈÝ
ÎÞÐèÒÆ¶¯
¡£Õâ¾ÍÊÇmv(1)ÃüÁîµÄͨ³£²Ù×÷·½Ê½¡£ª¥
ÎÒÃÇ˵Ã÷ÁËÆÕͨÎļþµÄÁ¬½Ó¼ÆÊýµÄ¸ÅÄµ«ÊǶÔÓÚĿ¼ÎļþµÄÁ¬½Ó¼ÆÊý×Ö¶ÎÓÖÈçºÎ
ÄØ?¼Ù¶¨
ÎÒÃÇÔÚÐÂĿ¼Öй¹ÔìÁËÒ»¸öÐÂĿ¼£ºª¥
$ mkdir testdirª¤
ͼ4ª±9ÏÔʾÁËÆä½á¹û¡£×¢Ò⣬ÔÚ¸ÃͼÖУ¬ÎÒÃÇÏÔʽµØÏÔʾÁ˪±ºÍª±ª±Ä¿Â¼Ïî¡£ª¤ª¤
ª¤
ͼ4ª±9¡þÔÚ´´½¨ÁËĿ¼testdirºóµÄÑù±¾Îļþϵͳª¤
±àºÅ2549µÄi ¼£Ã£Ä££ª³£²¡½nodeÆäÀàÐÍ×ֶαíʾËüÊÇÒ»¸öĿ¼£¬¶øÁ¬½Ó¼ÆÊý2¡£ÈÎ
ºÎÒ»¸öÒ¶
Ŀ¼(²»°üº¬ÈÎ
ºÎÆäËüĿ¼£¬Ò²¾ÍÊÇ×ÓĿ¼µÄĿ¼)ÆäÁ¬½Ó¼ÆÊý×ÜÊÇ2£¬ÊýÖµ2À´×ÔÓÚÃüÃû¸ÃĿ¼µÄ
Ŀ¼Ïî(te
stdir)ÒÔ¼°ÔÚ¸ÃĿ¼ÖеαÏî¡£±àºÅΪ1267µÄi ¼£Ã£Ä££ª³£²¡½node£¬ÆäÀàÐÍ×Ö¶Î
±íʾËüÊÇ
Ò»¸öĿ¼£¬¶øÆä
Á¬½Ó¼ÆÊýÔò´óÓÚ»òµÈÓÚ3¡£Ëü´óÓÚ»òµÈÓÚ3µÄÔÒòÊÇ£¬ÖÁÉÙÓÐÓÉÈý¸öĿ¼ÏîÖ¸ÏòËü£º
Ò»¸öÊÇÃü
ÃûËüµÄĿ¼Ïî(ÔÚͼ4ª±9ÖжÎÓбíʾ³öÀ´)£¬µÚ¶þ¸öÊÇÔÚ¸ÃĿ¼ÖеαÏµÚÈý¸öÊÇ
ÔÚÆä×ÓÄ¿
¼testdirÖе᪱Ïî¡£×¢Ò⣬ÔÚ¹¤×÷Ŀ¼ÖеÄÿ¸ö×ÓĿ¼¶¼Ê¹¸Ã¹¤×÷Ŀ¼µÄÁ¬½Ó
¼ÆÊýÔö1¡£
ª¥
ÕýÈçÇ°ÃæËùÊö£¬ÕâÊÇUnixÎļþϵͳµÄ¾µä¸ñʽ£¬ÔÚBach¡²1986¡³Ò»ÊеĵÚËÄÕÂÖжÔ
´Ë×÷ÁË˵
Ã÷¡£¹ØÓÚ±´¿ËÀ³¿ìËÙÎļþϵͳ¶Ô´ËËù×÷µÄ¸ü¸ÄÇë²ÎÔÄLeffler etal¡²£±£¹£¸£¹¡³ÖÐ
µÄµÚÆßÕÂ
¡£ª¤
4ª±15¡þlink,unlink,removeºÍrenameº¯Êýª¥
ÈçÉϽÚËùËùÊö£¬ÈκÎÒ»¸öÎļþ¿ÉÒÔÓжà¸öĿ¼ÏîÖ¸ÏòÆäi ¼£Ã£Ä££ª³£²¡½node¡£´´
½¨Ò»¸öÏò
ÏÖ´æÎļþµÄÁ¬½ÓµÄ·½·¨ÊÇʹÓÃlinkº¯Êý¡£ª¥
#include<unistdª±h>ª¥
int link(const char *ª«existingpath,ª«const char *ª«newpath);ª«ª¥
·µ»Ø£ºÈô³É¹¦Îª0£¬³ö´íΪ-1ª¤
´Ëº¯Êý´´½¨Ò»¸öÐÂĿ¼Ïnewpath,ËüÒýÓÃÏÖ´æÎļþexistingpath¡£ÈçÈônewpath
ÒѾ´æÔÚ
£¬Ôò³ö´í·µ»Ø¡£ª¥
´´½¨ÐÂĿ¼ÏîÒÔ¼°Ôö¼ÓÁ¬½Ó¼ÆÊýÓ¦µ±ÊǸöÔ×Ó²Ù×÷¡£(Çë»ØÒäÔÚ3ª±11½ÚÖжÔÔ×Ó²Ù
×÷µÄÌÖÂÛ
¡£)ª¥
´ó¶àÊýʵÏÖ£¬ÀýÈçSVR4ºÍ4ª±3£«BSDÒªÇóÕâÁ½¸ö·¾¶ÃûÔÚͬһ¸öÎļþϵͳÖС£ª¥
POSIXª±1ÔÊÐíÖ§³Ö¿çÔ½ÎļþϵͳµÄÁ¬½ÓµÄʵÏÖ¡£ª¥
Ö»Óг¬¼¶Óû§½ø³Ì¿ÉÒÔ´´½¨Ö¸ÏòÒ»¸öĿ¼µÄÐÂÁ¬½Ó¡£ÆäÀíÓÉÊÇÕâÑù×ö¿ÉÄÜÔÚÎļþϵ
ͳÖÐÐγÉ
Ñ»·£¬´ó¶àÊý´¦ÀíÎļþϵͳµÄ¹«ÓóÌÐò¶¼²»ÄÜ´¦ÀíÕâÖÖÇé¿ö¡£(ÎÒÃÇÔÚ4ª±16½ÚÖн«
˵Ã÷Ò»¸ö
ÓÉ·ûºÅÁ¬½ÓÒýÈëµÄÑ»·µÄÀý×Ó¡£)ª¥
ΪÁËÒÆÈ¥Ò»¸öÏÖ´æµÄĿ¼ÏÎÒÃǵ÷ÓÃunlinkº¯Êý¡£ª¥
#include <unistdª±h>ª¥
int unlink(const char *ª«pathname);ª«ª¥
·µ»Ø£ºÈô³É¹¦Îª0£¬³ö´íΪ££±ª¤
´Ëº¯ÊýÒÆÈ¥Ä¿Â¼Ï²¢½«ÓÉpathnameËùÒýÓõÄÎļþµÄÁ¬½Ó¼ÆÊý¼õ1¡£Èç¹û¸ÃÎļþ»¹
ÓÐÆäËüÁ¬
½Ó£¬ÔòÈÔ¿Éͨ¹ýÆäËüÁ¬½Ó´æÈ¡¸ÃÎļþµÄÊý¾Ý¡£Èç¹û³ö´í£¬Ôò¸ÃÎļþ×÷Èκθü¸Ä¡£ª¥
ÎÒÃÇÔÚÇ°ÃæÒѾÌá¼°£¬ÎªÁ˽â³ýÒ»¸ö¶ÔÎļþµÄÁ¬½Ó£¬ÎÒÃDZØÐë¶Ô°üº¬¸ÃĿ¼ÏîµÄÄ¿
¼¾ßÓÐд
ºÍÖ´ÐÐÐí¿ÉÊý¡£ÕýÈçÎÒÃÇÔÚ4ª±10½ÚÖÐËùÊö£¬Èç¹û¶Ô¸ÃĿ¼ÉèÖÃÁËճס룬ÔòÎÒÃÇ
¶Ô¸ÃĿ¼
±ØÐë¾ßÓÐдÐí¿ÉÊý£¬²¢ÇÒª¥
¡¤ÓµÓиÃÎļþ£¬»òÕߪ¥
¡¤ÓµÓиÃĿ¼£¬»òÕߪ¥
¡¤¾ßÓг¬¼¶Óû§ÓÅÏÈÊýª¥
Ö»Óе±Á¬½Ó¼ÆÊý´ïµ½0ʱ£¬¸ÃÎļþµÄÄÚÈÝÔٿɱ»É¾³ý¡£ÁíÒ»¸öÌõ¼þÒ²×èֹɾ³ýÎļþ
µÄÄÚÈÝ-
Ö»ÒªÓÐÒ»¸ö½ø³Ìʹ¸ÃÎļþ´ò¿ª£¬ÆäÄÚÈÝÒ²²»ÄÜɾ³ý¡£µ±¹Ø±ÕÒ»¸öÎļþʱ£¬ÏµÍ³ºËÊ×
Ïȼì²éʹ
¸ÃÎļþ´ò¿ªµÄ½ø³Ì¼ÆÊý¡£Èç¹û¸Ã¼ÆÊý´ïµ½0£¬È»ºóϵͳºË¼ì²éÆäÁ¬½Ó¼ÆÊý£¬Èç¹ûÕâ
Ò²ÊÇ0£¬ÄÇ
ô¾Íɾ³ý¸ÃÎļþµÄÄÚÈÝ¡£ª¤
ʵÀýª¥
³ÌÐò4ª±5´ò¿ªÒ»¸öÎļþ£¬È»ºóunlinkËü¡£Ö´ÐиóÌÐòµÄ½ø³ÌÈ»ºó˯Ãß15ÃëÖÓ£¬½Ó×Å
¾ÍÖÕÖ¹¡£
ª¤ª¤ª¤
³ÌÐò4ª±5¡þ´ò¿ªÒ»¸öÎļþ£¬È»ºóunlinkËüÔËÐиóÌÐò£¬Æä½á¹ûÊÇ£ºª¥
$ ls -1 tempfile¡þ²é¿´Îļþ´óСª¥
-rw-r--r-- 1 stevens 9240990 Jul 31 13:42 tempfileª¥
$ df/home¡þ¼ì²é¿Õ¼äÇøª¥
Filesystem kbytes used avail capacity Mounted onª¥
/dev/sd0h 282908 181979 72638 71% /homeª¥
$ aª±out &¡þÔÚºǫ́ÔËÐгÌÐò4ª±5ª¥
1364¡þshell´òÓ¡Æä½ø³ÌIDª¥
$ file unlinked¡þ¸ÃÎļþÊÇδÁ¬½ÓµÄª¥
ls -1 tempfile¡þ¹Û²ìÎļþÊÇ·ñÈԾɴæÔÚª¥
tempfile not found¡þĿ¼ÏîÒÑɾ³ýª¥
$ df/home¡þ¼ì²é¿Õ¼äÇøÓÐÎޱ仯ª¥
Filesystem kbytes used avail capacity Mounted onª¥
/dev/sd0h 282908 181979 72638 71% /homeª¥
$ done¡þ³ÌÐòÖ´ÐнáÊø£¬ËùÓдò¿ªÎļþ½Ô¹Ø±Õ£¬ÏàÓ¦Å̿ռä³ÉΪ¿Õ¼äª¥
df/homeª¥
Filesystem kbytes used avail capacity Mounted onª¥
/dev/sd0h 282908 172939 81678 68% /homeª¥
ÏÖÔÚ£¬Å̿ռäÇøÔö¼ÓÁË9ª±2Mbytesª¥
unlinkµÄÕâÖÖÌØÐÔ³£ÓɳÌÐòÓÃÀ´È·±£¼´±ã³ÌÐò±ÀÀ£ËüËù´´½¨µÄÁÙʱÎļþÒ²²»»áÒÅÁô
ÏÂÀ´¡£½ø
³ÌÓÃopen»òcreat´´½¨Ò»¸öÎļþ£¬È»ºóÁ¢¼´µ÷ÓÃunlink¡£ÒòΪ¸ÃÎļþÈÔ¾ÉÊÇ´ò¿ªµÄ
£¬ËùÒÔ²»
»á½«ÆäÄÚÈÝɾ³ý¡£Ö»Óе±½ø³Ì¹Ø±Õ¸ÃÎļþ»òÖÕֹʱ(ÔÚÕâÖÖÇé¿öÏ£¬ÏµÍ³ºË¹Ø±Õ¸Ã
½ø³ÌËù´ò
¿ªµÄÈ«²¿Îļþ)£¬¸ÃÎļþµÄÄÚÈÝÔÙ±»É¾³ý¡£ª¥
ÈçÈôpathnameÊÇÒ»·ûºÅÁ¬½Ó£¬ÄÇôunlinkÉæ¼°µÄÊÇ·ûºÅÁ¬½Ó¶ø²»ÊÇÓɸÃÁ¬½ÓËùÒýÓÃ
µÄÎļþ¡£
ª¥
³¬¼¶Óû§¿ÉÒÔµ÷ÓÃÆä²ÎÊýpathnameÖ¸¶¨Ò»¸öĿ¼µÄunlink£¬µ«ÊÇͨ³£²»Ê¹ÓÃÕâÖÖ·½
ʽ£¬¶øÓ¦
µ±Ê¹Óú¯ÊýrmdirÎÒÃǽ«ÔÚ4ª±20½ÚÖÐ˵Ã÷rmdirº¯Êý¡£ª¥
ÎÒÃÇÒ²¿ÉÒÔÓÃremoveº¯Êý½â³ý¶ÔÒ»¸öÎļþ»òĿ¼µÄÁ¬½Ó¡£¶ÔÓÚÎļþ£¬removeµÄ¹¦ÄÜ
Óëunlink
Ïàͬ¡£¶ÔÓÚĿ¼£¬removeµÄ¹¦ÄÜÓërmdirÏàͬ¡£ª¥
#include<stdioª±h>ª¥
int remove(const char *ª«pathname);ª«ª¥
·µ»Ø£ºÈô³É¹¦Îª0£¬³ö´íΪ££±ª¥
ANSI CÖ¸¶¨removeº¯Êýɾ³ýÒ»¸öÎļþ¡£Õâ¸ü¸ÄÁËUnixÀúÀ´Ê¹ÓõÄÃû×Öunlink,ÆäÔ
ÒòÊÇʵÏÖC
±ê×¼µÄ´ó¶àÊý·ÇUnixϵͳ²¢²»Ö§³ÖÎļþÁ¬½Ó¡£ª¥
Îļþ»òĿ¼ÓÃrenameº¯Êý»»Ãû¡£ª¥
#include<stdioª±h>ª¥
int rename(const char *ª«oldname,ª«const char *ª«newname);ª«ª¥
·µ»Ø£ºÈô³É¹¦Îª0£¬³ö´íΪ££±ª¥
ANSI C ¶ÔÎļþ¶¨ÒåÁ˴˺¯Êý¡£(C±ê×¼²»´¦ÀíĿ¼¡£)POSIXª±1À©Õ¹´Ë¶¨Òå°üº¬ÁËÄ¿
¼¡£ª¥
ÒÀÀµÓÚoldnameÊÇÖ¸Îļþ»¹ÊÇĿ¼£¬ÓÐÁ½ÖÖÇé¿öÒª¼ÓÒÔ˵Ã÷¡£ÎÒÃÇҲӦ˵Ã÷Èç¹ûne
wnameÒѾ´æÔÚ½«»á·¢Éúʲô¡£ª¥
1ª±ÈçÈôoldname˵Ã÷Ò»¸öÎļþ¶ø²»ÊÇĿ¼£¬ÄÇôΪ¸ÃÎļþ»»Ãû¡£ÔÚÕâÖÖÇé¿öÏ£¬
Èç¹ûnewnam
eÒÑ´æÔÚ£¬ÔòËü²»ÄÜÒýÓÃÒ»¸öĿ¼¡£ÈçÈônewnameÒÑ´æÔÚ£¬¶øÇÒ²»ÊÇÒ»¸öĿ¼£¬ÔòÏÈ
½«¸ÃĿ¼
Ïîɾ³ýÈ»ºó½«oldname»»ÃûΪnewname¡£¶Ô°üº¬oldnameµÄĿ¼ÒÔ¼°°üº¬newnameµÄÄ¿
¼£¬µ÷ÓÃ
½ø³Ì±ØÐë¾ßÓÐдÐí¿ÉÊý£¬ÒòΪ½«¸ü¸ÄÕâÁ½¸öĿ¼¡£ª¥
2ª±ÈçÈôoldname˵Ã÷Ò»¸öĿ¼£¬ÄÇôΪ¸ÃĿ¼»»Ãû¡£Èç¹ûnewnameÒÑ´æÔÚ£¬ÔòËü±Ø
ÐëÒýÓÃÒ»
¸öĿ¼£¬¶øÇÒ¸ÃĿ¼Ӧµ±ÊÇ¿ÕĿ¼¡£(ÎÒÃÇÌá¼°¿ÕĿ¼ʱ£¬Ö¸µÄÊǸÃĿ¼ÖÐÖ»ÓЪ±
ºÍª±ª±Ïî
¡£)Èç¹ûnewname´æÔÚ(¶øÇÒÊÇÒ»¸ö¿ÕĿ¼)£¬ÔòÏȽ«Æäɾ³ý£¬È»ºó½«oldname»»ÃûΪ
newname¡£
ÁíÍ⣬µ±ÎÒÃÇΪһ¸öĿ¼»»Ãûʱ£¬newname²»Äܰüº¬oldname×÷ΪÆä·¾¶Ç°×º¡£ÀýÈç
£¬ÎÒÃDz»
Äܽ«/usr/foo»»ÃûΪ/usr/foo/testdir,ÒòΪÀÏÃû×Ö(/usr/foo)ÊÇÐÂÃû×ֵķ¾¶Ç°
׺£¬Òò¶ø
²»Äܽ«ÆäÒÆÈ¥¡£ª¥
3ª±×÷Ϊһ¸öÌØÀý£¬Èç¹ûoldnameºÍnewnameÒýÓÃͬһÎļþ£¬Ôòº¯Êý²¢²»×÷Èκθü¸Ä
¶ø³É¹¦·µ
»Ø¡£ª¥
ÈçÈônewnameÒѾ´æÔÚ£¬Ôòµ÷Óýø³ÌÐèÒª¶ÔÆäÓÐдÐí¿ÉÊý(Èçͬɾ³ýÇé¿öÒ»Ñù)¡£Áí
Í⣬ѡÓÃ
½ø³Ì½«É¾³ýoldnameĿ¼Ï²¢¿ÉÄÜÒª´´½¨newnameĿ¼ÏËùÒÔËüÐèÒª¶Ô°üº¬old
nameµÄÄ¿
¼¼°°üº¬newnameµÄĿ¼¾ßÓÐдºÍÖ´ÐÐÐí¿ÉÊý¡£ª¤
4ª±16¡þ·ûºÅÁ¬½Óª¥
Ò»¸ö·ûºÅÁ¬½ÓÊǶÔÒ»¸öÎļþµÄ¼ä½ÓÖ¸Õ룬ËüÓëÉÏÒ»½ÚËùÊöµÄÓ²Á¬½ÓÓÐËù²»Í¬£¬Ó²Á¬
½ÓÖ±½ÓÖ¸
ÏòÎļþµÄi ¼£Ã£Ä££ª³£²¡½node¡£Òý½ø·ûºÅÁ¬½ÓµÄÔÒòÊÇΪÁ˱ÜÃâÓ²Á¬½ÓµÄһЩÏÞ
ÖÆ£º(a)Ó²
Á¬½Óͨ³£ÒªÇó
Á¬½ÓºÍÎļþλÓÚͬһÎļþϵͳÖУ¬(b)Ö»Óг¬¼¶Óû§²ÅÄÜ´´½¨Ò»¸öµ½Ò»¸öĿ¼µÄÓ²
Á¬½Ó¡£¶Ô
·ûºÅÁ¬½ÓÒÔ¼°ËüÖ¸ÏòʲôûÓÐÎļþϵͳÏÞÖÆ£¬ÈκÎÓû§¶¼¿É´´½¨Ö¸ÏòĿ¼µÄ·ûºÅÁ¬
½Ó¡£·ûºÅ
Á¬½ÓµäÐ͵ØÓÃÓÚ½«Ò»¸öÎļþ»òÕû¸öĿ¼½á¹¹ÒƵ½ÏµÍ³ÖеÄij¸öÆäËüλÖᣪ¥
·ûºÅÁ¬½ÓÓÉ4ª±2BSDÒý½ø£¬ºóÀ´Óֵõ½SVR4µÄÖ§³Ö¡£ÔÚSVR4ÖУ¬´«Í³µÄϵͳVÎļþϵ
ͳ(S5)ºÍ
ͳһÎļþϵͳ(UFS)¶¼Ö§³Ö·ûºÅÁ¬½Ó¡£ª¥
POSIX 1003ª±1-1990±ê×¼²¢²»°üÀ¨·ûºÅÁ¬½Ó¡£µ«ºÜ¿ÉÄÜ»á¼Óµ½1003ª±1aÖС£ª¥
µ±Ê¹ÓÃÒÔÃû×ÖÒýÓÃÒ»¸öÎļþµÄº¯Êýʱ£¬ÎÒÃÇÓ¦µ±Á˽â¸Ãº¯ÊýÊÇ·ñ´¦Àí·ûºÅÁ¬½Ó¹¦ÄÜ
¡£Ò²¾ÍÊÇ
ÊÇ·ñ¸úËæ·ûºÅÁ¬½Óµ½´ïËüËùÁ¬½ÓµÄÎļþ¡£ÈçÈô¸Ãº¯Êý´¦Àí·ûºÅÁ¬½Ó¹¦ÄÜ£¬Ôò¸Ãº¯Êý
µÄ·¾¶Ãû
²ÎÊýÒýÓÃÓÉ·ûºÅÁ¬½ÓÖ¸ÏòµÄÎļþ¡£·ñÔò£¬Ò»¸ö·¾¶Ãû²ÎÊýÒýÓÃÁ¬½Ó±¾Éí£¬¶ø²»ÊÇÓÉ
¸ÃÁ¬½ÓÖ¸
ÏòµÄÎļþ¡£Í¼4ª±10ÕªÒªÁгöÁ˱¾ÕÂÖÐËù˵Ã÷µÄ¸÷¸öº¯ÊýÊÇ·ñ´¦Àí·ûºÅÁ¬½Ó¹¦ÄÜ¡£
ÒòΪrmdir
²¢²»ÊÇÕë¶Ô·ûºÅÁ¬½Ó½øÐж¨ÒåµÄ(ºêpathÊÇ·ûºÅÁ¬½ÓÔò³ö´í·µ»Ø)£¬ËùÒÔÔÚͼ4ª±10
ÖÐûÓÐÁÐ
³öÕâÒ»º¯Êý¡£ÒòΪ¶Ô·ûºÅÁ¬½ÓµÄ´¦ÀíÊÇÓÉ·µ»ØÎļþÃèÊö·ûµÄº¯Êý½øÐеÄ(ͨ³£ÊÇop
en)£¬ËùÒÔ
ÒÔÎļþÃèÊö·û×÷Ϊ²ÎÊýµÄº¯Êý(fstat,fchmodµÈ)ҲδÁгö¡£chownÊÇ·ñ¸úËæ·ûºÅÁ¬
½ÓÈ¡¾öÓÚ
ʵÏÖ-¸÷ÖÖÓйØÏ¸½ÚÇë²ÎÔÄ4ª±11½Ú¡£ª¤ª¤ª¤
ͼ4ª±10¡þ¸÷¸öº¯Êý¶Ô·ûºÅÁ¬½ÓµÄ´¦Àíª¤
ʵÀýª¥
ʹÓ÷ûºÅÁ¬½Ó¿ÉÄÜÔÚÎļþϵͳÖÐÒý½øÑ»·¡£´ó¶àÊý²éÕÒ·¾¶ÃûµÄº¯ÊýÔÚÕâÖÖÇé¿ö·¢
Éúʱ¶¼·µ
»ØÖµÎªELOOPµÄerrno¿¼ÂÇÏÂÁÐÃüÁîÐòÁУºª¥
$ mkdir foo¡þ¹¹Ôì-ÐÂĿ¼ª¥
$ touch foo/a¡þ´´½¨O³¤Îļþª¥
$ln -s ª±ª±/foo foo/testdir ´´½¨-·ûºÅÁ¬½Óª¥
$ ls -1 fooª¥
total 1ª¥
-rw-rw-r-- 1 stevnens 0 Dec 6 06:06 aª¥
lrwxrwxrwx 1 stenens 6 Dec 6 06:06 testdir -> ª±ª±/fooª¤
Õâ´´½¨ÁËÒ»¸öĿ¼foo£¬Ëü°üº¬ÁËÒ»¸öÃûΪaµÄÎļþÒÔ¼°Ò»¸ö·ûºÅÁ¬½Ó£¬ËüÖ¸Ïòfoo
¡£ÔÚͼ4ª±
11ÖÐÏÔʾÁËÕâÖÖ½á¹û£¬Í¼ÖÐÒÔÔ°±íʾĿ¼£¬ÒÔÕý·½Ðαíʾһ¸öÎļþ¡£ÈçÈôÎÒÃÇдһ
¶Î¼òµ¥µÄ
³ÌÐò£¬ËüʹÓñê×¼º¯Êýftw(3)ÒÔ½µÐòÖÜÓÎÎļþ½á¹¹£¬´òӡÿ¸öÓöµ½µÄ·¾¶Ãû£¬ÔòÆä
Êä³öÊÇ£º
ª¥
fooª¥
foo/aª¥
foo/testdirª¥
foo/testdir/aª¥
foo/testdir/testdirª¥
foo/testdir/testdir/aª¥
foo/testdir/testdir/testdirª¥
foo/testdir/testdir/testdir/aª¥
(many more lines)ª¥
ftw returned -1:Too many levels of symbolic linksª¥
ÔÚ4ª±21½ÚÖУ¬ÌṩÁËÎÒÃÇ×Ô¼ºµÄftwº¯Êý°æ±¾£¬ËüÓÃlstat´úÌæstatÒÔ×èÖ¹Ëü¸úËæ
·ûºÅÁ¬½Ó
¡£ª¤ª¤ª¤
ͼ4ª±11¡þ´´½¨Ò»¸öÑ»·µÄ·ûºÅÁ¬½Ótestdirª¥
ÕâÑùÒ»¸öÁ¬½ÓºÜÈÝÒ×±»É¾³ý-ÒòΪunlink²¢²»¸úËæ·ûºÅÁ¬½Ó£¬ËùÒÔÎÒÃÇ¿ÉÒÔunlink
Îļþfoo/
testdir¡£µ«ÊÇÈç¹ûÎÒÃÇ´´½¨ÁËÒ»¸ö¹¹³ÉÕâÖÖÑ»·µÄÓ²Á¬½Ó£¬ÄÇô¾ÍºÜÄÑÈ¥³ýËüª¬
ª³¡£Õâ¾Í
ÊÇΪʲôlinkº¯Êý²»ÔÊÐí¹¹ÔìÖ¸ÏòĿ¼µÄÓ²Á¬½ÓµÄÔÒò¡£(³ý·Ç½ø³Ì¾ßÓг¬¼¶Óû§
ÓÅÏÈÊý¡£)
ª¥
ÔÚopenÒ»¸öÎļþʱ£¬ÈçÈô´«µÝ¸øopenº¯ÊýµÄ·¾¶ÃûÖ¸¶¨ÁËÒ»¸ö·ûºÅÁ¬½Ó£¬ÄÇôope
n¸úËæ´ËÁ¬
½Óµ½Ö¸¶¨µÄÎļþ¡£Èô´Ë·ûºÅÁ¬½ÓËùÖ¸ÏòµÄÎļþ²¢²»´æÔÚ£¬Ôòopen³ö´í·µ»Ø£¬±íʾËü
²»ÄÜ´ò¿ª
¸ÃÎļþ¡£Õâ¿ÉÄÜ»áʹ²»ÊìϤ·ûºÅÁ¬½ÓµÄÓû§¸Ðµ½ÃÔ»ó£¬ÀýÈ磺ª¥
$ ln -s /no/such/file myfile¡þ´´½¨-·ûºÅÁ¬½Óª¥
$ ls myfileª¥
myfile¡þls²éµ½¸ÃÎļþª¥
$ cat myfile¡þÊÔͼ¹Û¿´¸ÃÎļþª¥
cat:myfile:No such file or directoryª¥
$ ls -1 myfile¡þÊÔ-lÑ¡Ï
lrwxrwxrwx 1 stevens 13 Dec 6 07:27 myfile->/no/such/fileª¤
ÎļþmyfileÊÇ´æÔڵ쬵«cat¶¼³ÆÃ»ÓÐÕâÒ»Îļþ¡£ÆäÔÒòÊÇmyfileÊǸö·ûºÅÁ¬½Ó£¬
Óɸ÷ûºÅ
Á¬½ÓËùÖ¸ÏòµÄÎļþ²¢²»´æÔÚ¡£lsÃüÁîµÄ-lÑ¡ÔñÏî¸øÓëÎÒÃÇÁ½¸öÌáʾ£ºµÚÒ»¸ö×Ö·ûÊÇ
l£¬Ëü±í
ʾÕâÊÇÒ»¸ö·ûºÅÁ¬½Ó£»¶ø->Ò²±íʾÕâÊÇÒ»¸ö·ûºÅÁ¬½Ó¡£lsÃüÁÓÐÁíÒ»¸öÑ¡ÔñÏî(
-F),ËüÔÚ
ÊÇ·ûºÅÁ¬½ÓµÄÎļþÃûºó¼ÓÒ»¸ö@·ûºÅ£¬ÔÚδʹÓÃ-lÑ¡ÔñÏîʱ£¬Õâ¿ÉÒÔ°ïÖúʶ±ð³ö·û
ºÅÁ¬½Ó¡£
ª¤
4ª±17¡þsymlinkºÍreadlinkº¯Êýª¥
symlinkº¯Êý´´½¨Ò»¸ö·ûºÅÁ¬½Ó¡£ª¥
#include<unistdª±h>ª¥
int symlink(const char *ª«actualpath,ª«const char *ª«sympath);ª«ª¥
·µ»Ø£ºÈô³É¹¦Îª0£¬³ö´íΪ££±ª¤
¸Ãº¯Êý´´½¨ÁËÒ»¸öÖ¸ÏòactualpathµÄÐÂĿ¼Ïîsympath£¬ÔÚ´´½¨´Ë·ûºÅÁ¬½Óʱ£¬²¢
²»ÒªÇóact
ualpathÒѾ´æÔÚ¡£(ÔÚÉÏÒ»½Ú½áÊø²¿·ÖµÄÀý×ÓÖÐÎÒÃÇÒѾ¿´µ½ÁËÕâÒ»µã¡£)ͬʱ£¬
ª¤
¬ª³¡¼£Ë£Çª³£²¡ ÔÚ±àд±¾½Úʱ£¬×÷ÕßÔÚ×Ô¼ºµÄÏµÍ³É ×÷Ϊһ¸öʵÑé×öÁËÕâÒ»µã¡£
Îļþϵͳ
±äµÃ´íÎó°Ù³ö£¬Õý³£µÄfsck(1)¹«¹²³ÌÐò²»Äܽâ¾öÎÊÌ⡣ΪÁËÐÞ¸´´ËÎļþϵͳ²»µÃ
²»Ê¹ÓÃÁË
²¢²»ÍƼöʹÓõŤ¾ßclri(8)ºÍdcheck(8)¡£actualpathºÍsympath²¢²»±ØÐëλÓÚͬ
Ò»Îļþϵ
ͳÖС£ª¥
ÒòΪopenº¯Êý¸úËæ·ûºÅÁ¬½Ó£¬ËùÒÔÎÒÃÇÐèÒªÓÐÒ»ÖÖ·½·¨´ò¿ª¸ÃÁ¬½Ó±¾Éí£¬²¢¶ÁÔÚ¸Ã
Á¬½ÓÖеÄ
Ãû×Ö¡£readlinkº¯ÊýÌṩÕâÖÖ¹¦ÄÜ¡£ª¥
#include <unistdª±h>ª¥
int readlink(const char *ª«pathname,ª«char *ª«bufª«,int ª«bufsize);ª«ª¥
·µ»Ø£ºÈô³É¹¦Îª¶ÁµÄ×Ö½ÚÊý£¬³ö´íΪ££±ª¤
´Ëº¯Êý×éºÏÁËopen,readºÍcloseµÄËùÓвÙ×÷¡£ª¥
Èç¹û´Ëº¯Êý³É¹¦£¬ÔòËü·µ»Ø¶ÁÈëbufµÄ×Ö½ÚÊý¡£ÔÚbufÖзµ»ØµÄ·ûºÅÁ¬½ÓµÄÄÚÈݲ»ÒÔ
null×Ö·û
ÖÕÖ¹¡£ª¤
4ª±18¡þÎļþµÄʱ¼äª¥
¶Ôÿ¸öÎļþ±£³ÖÓÐÈý¸öʱ¼ä×ֶΡ£ËüÃǵÄÒâÒåʾÓÚͼ4ª±12ÖÐÖС£ª¤ª¤ª¤
ͼ4ª±12¡þÓëÿ¸öÎļþÏà¹ØµÄÈý¸öʱ¼äÖµª¤
×¢ÒâÐÞ¸Äʱ¼ä(st ¼£Ã£Ä££ª³£²¡½mtime)ºÍ¸ü¸Ä״̬ʱ¼ä(st ¼£Ã£Ä££ª³£²¡½ctime
)Ö®¼äµÄÇø
±ð¡£ÐÞ¸Äʱ¼äÊÇÎļþÄÚÈÝ×îºó
Ò»´Î±»Ð޸ĵÄʱ¼ä¡£¸ü¸Ä״̬ʱ¼äÊǸÃÎļþµÄi ¼£Ã£Ä££ª³£²¡½node×îºóÒ»´Î±»ÐÞ
¸ÄµÄʱ¼ä
¡£ÔÚ±¾ÕÂÖÐÎÒÃÇ
ÒÑ˵Ã÷Á˺ܶà²Ù×÷£¬ËüÃÇÓ°Ïìµ½i ¼£Ã£Ä££ª³£²¡½node,µ«²¢Ã»Óиü¸ÄÎļþµÄʵ¼ÊÄÚ
ÈÝ£º¸ü¸Ä
ÎļþµÄ´æÈ¡Êý
¡¢¸ü¸ÄÓû§ID¡¢¸ü¸ÄÁ¬½ÓÊýµÈµÈ¡£ÒòΪÔÚi ¼£Ã£Ä££ª³£²¡½nodeÖеÄËùÓÐÐÅÏ¢¶¼ÊÇ
ÓëÎļþµÄ
ʵ¼ÊÄÚÈÝ·Ö²¼´æ·ÅµÄ£¬ËùÒÔ£¬³ýÁËÎļþÊý¾ÝÐÞ¸Äʱ¼äÒÔÍ⣬ÐèÒª¸ü¸Ä״̬ʱ¼ä¡£ª¥
×¢Ò⣬ϵͳ²¢²»±£³ÖÓжÔÒ»¸öi ¼£Ã£Ä££ª³£²¡½nodeµÄ×îºóÒ»´Î´æÈ¡Ê±¼ä¡£ËùÒÔac
cessºÍsta
tº¯Êý²¢²»¸ü¸ÄÕâÈý¸öʱ¼äÖеÄÈÎÒ»¸ö¡£ª¥
ϵͳ¹ÜÀíÔ±³£³£Ê¹ÓôæÈ¡Ê±¼äÀ´É¾³ýÔÚÒ»¶¨µÄʱ¼ä·¶Î§ÄÚûÓдæÈ¡¹ýµÄÎļþ¡£µäÐÍ
µÄÀý×ÓÊÇ
ɾ³ýÔÚ¹ýÈ¥Ò»ÖÜÄÚûÓдæÈ¡¹ýµÄÃûΪaª±out»òcoreµÄÎļþ¡£find(1)ÃüÁî³£±»ÓÃÀ´
½øÐÐÕâÖÖ
²Ù×÷¡£ª¥
ÐÞ¸Äʱ¼äºÍ¸ü¸Ä״̬ʱ¼ä¿É±»ÓÃÀ´¹éµµÆäÄÚÈÝÒѾ±»Ð޸ĻòÆäi ¼£Ã£Ä££ª³£²¡½no
deÒѾ±»
¸ü¸ÄµÄÄÇЩÎļþ¡£ª¥
lsÃüÁî°´ÕâÈý¸öʱ¼äÖµÖеÄÒ»¸öÅÅÐò½øÐÐÏÔʾ¡£°´ÏµÍ³Ä¬ÈÏ(ÓÃ-l»ò-tÑ¡ÔñÏîµ÷ÓÃ
ʱ)£¬Ëü°´
ÎļþµÄÐÞ¸Äʱ¼äµÄÏȺóÅÅÐòÏÔʾ¡£-uÑ¡ÔñÏîʹÆäÓôæÈ¡Ê±¼äÅÅÐò£¬-cÑ¡ÔñÏîÔòʹÆä
Óøü¸Ä×´
̬ʱ¼äÅÅÐò¡£ª¥
ÓÃ4ª±13ÕªÒªÁгöÁËÎÒÃÇÒÑ˵Ã÷¹ýµÄ¸÷ÖÖº¯Êý¶ÔÕâÈý¸öʱ¼äµÄ×÷Ó᣻ØÒä4ª±14½ÚÖÐ
ËùÊö£¬Ä¿
¼Êǰüº¬Ä¿Â¼Ïî(ÎļþÃûºÍÏà¹ØµÄi ¼£Ã£Ä££ª³£²¡½node±àºÅ)µÄÎļþ£¬Ôö¼Ó¡¢É¾³ý
»òÐÞ¸ÄÄ¿
¼Ïî»áÓ°Ïìµ½Óë
ÆäËùÔÚĿ¼Ïà¹ØµÄÈý¸öʱ¼ä¡£Õâ¾ÍÊÇÔÚͼ4ª±13Öаüº¬¶øÁеÄÔÒò£¬ÆäÖÐÒ»ÁÐÊÇÓë
¸ÃÎļþ(»ò
Ŀ¼)Ïà¹ØµÄÈý¸öʱ¼ä£¬ÁíÒ»ÁÐÊÇÓëËùÒýÓõÄÎļþ(»òĿ¼)µÄ¸¸Ä¿Â¼Ïà¹ØµÄÈý¸öʱ
¼ä¡£ÀýÈç
£¬´´½¨Ò»¸öÐÂÎļþÓ°Ïìµ½°üº¬´ËÐÂÎļþµÄĿ¼£¬Ò²Ó°Ïì¸ÃÐÂÎļþµÄi ¼£Ã£Ä££ª³£²
¡½node¡£
µ«ÊÇ£¬¶Á»òдһ
¸öÎļþÖ»Ó°Ïì¸ÃÎļþµÄi ¼£Ã£Ä££ª³£²¡½node£¬¶ø¶Ô¸¸Ä¿Â¼ÔòÎÞÓ°Ïì¡£(mkdirºÍrm
dirº¯ÊýÔÚ
4ª±20½ÚÖÐ˵Ã÷
¡£utimeº¯ÊýÔÚÏÂÒ»½ÚÖÐ˵Ã÷¡£6¸öexecº¯ÊýÔÚ4ª±20½ÚÖÐÌÖÂÛ¡£ÔÚµÚÊ®ËÄÕÂ˵Ã÷mk
fifoºÍpip
cº¯Êý¡£)ª¤ª¤ª¤
ͼ4ª±13¡þ¸÷ÖÖº¯Êý¶Ô´æÈ¡¡¢Ð޸ĺ͸ü¸Ä״̬ʱ¼äµÄ×÷Óê¤
4ª±19¡þutimeº¯Êýª¥
Ò»¸öÎļþµÄ´æÈ¡ºÍÐÞ¸Äʱ¼ä¿ÉÒÔÓÃutimeº¯Êý¸ü¸Ä¡£ª¥
#include<sys/typesª±h>ª¥
#include<utimeª±h>ª¥
int utime(const char *ª«pathname,ª«const struct utimbuf *ª«times);ª«ª¥
·µ»Ø£ºÈô³É¹¦Îª0£¬³ö´íΪ££±ª¤
´Ëº¯ÊýËùʹÓõĽṹÊÇ£ºª¤
struct untimbuf{ª¥
time ¼£Ã£Ä££ª³£²¡½t actime; /*´æÈ¡Ê±¼ä*/ª¥
time ¼£Ã£Ä££ª³£²¡½t modtime;/*ÐÞ¸Äʱ¼ä*/ª¤
}ª¤
Ôڴ˽ṹÖеÄÁ½¸öʱ¼äÖµÊÇÈÕÀúʱ¼ä¡£Èçͬ1ª±10½ÚÖÐËùÊö£¬ÕâÊÇ1970ª±1ª±1£¬00
£º00£º00
ÒÔÀ´¹ú¼Ê±ê׼ʱËù¾¹ýµÄÃëÊý¡£ª¥
´Ëº¯ÊýµÄ²Ù×÷ÒÔ¼°Ö´ÐÐËüËùÒªÇóµÄÓÅÏÈÊýÈ¡¾öÓÚtimes²ÎÊýÊÇ·ñÊÇNULL¡£ª¥
1ª±ÈçÈôtimesÊÇÒ»¸ö¿ÕÖ¸Õ룬Ôò´æÈ¡Ê±¼äºÍÐÞ¸Äʱ¼äÁ½Õß¶¼ÉèÖÃΪµ±Ç°Ê±¼ä¡£ÎªÁË
Ö´Ðд˲Ù
×÷±ØÐëÂú×ãÏÂÁÐÁ½Ìõ¼þÖ®Ò»£º(a)½ø³ÌµÄÓÐЧÓû§ID±ØÐëµÈÓÚ¸ÃÎļþµÄÊôÖ÷ID£»(b
)½ø³Ì¶Ô¸Ã
Îļþ±ØÐë¾ßÓÐдÐí¿ÉÊý¡£ª¥
2ª±ÈçÈôtimesÊÇ·Ç¿ÕÖ¸Õ룬Ôò´æÈ¡Ê±¼äºÍÐÞ¸Äʱ¼ä±»ÉèÖÃΪtimesËùÖ¸ÏòµÄ½á¹¹ÖÐ
µÄÖµ¡£´Ë
ʱ£¬½ø³ÌµÄÓÐЧÓû§ID±ØÐëµÈÓÚ¸ÃÎļþµÄÊôÖ÷ID£¬»òÕß½ø³Ì±ØÐëÊÇÒ»¸ö³¬¼¶Óû§½ø
³Ì¡£¶ÔÎÄ
¼þÖ»¾ßÓÐдÐí¿ÉÊýÊDz»¹»µÄ¡£ª¤
×¢Ò⣬ÎÒÃDz»ÄܶԸü¸Ä״̬ʱ¼äst ¼£Ã£Ä££ª³£²¡½ctimeÖ¸¶¨Ò»¸öÖµ£¬µ±µ÷ÓÃutim
eº¯Êýʱ£¬
´Ë×ֶα»×Ô¶¯¸üС£ª¥
ÔÚijЩUnix°æ±¾ÖУ¬touch(1)ÃüÁîʹÓô˺¯Êý¡£ÁíÍ⣬±ê×¼¹éµµ³ÌÐòtar(1)ºÍcpi
o(1)¿ÉÑ¡
µØµ÷ÓÃutime,ÒԱ㽫һ¸öÎļþµÄʱ¼äÖµÉèÖÃΪ½«Ëü¹éµµÊ±µÄÖµ¡£ª¤
ʵÀýª¥
³ÌÐò4ª±6ʹÓôøO ¼£Ã£Ä££ª³£²¡½TRUNCÑ¡ÔñÏîµÄopenº¯Êý½«Îļþ³¤¶È½Ø¶ÌΪ0£¬µ«
²¢²»¸ü¸Ä
Æä´æÈ¡Ê±¼ä¼°ÐÞ
¸Äʱ¼ä¡£ÎªÁË×öµ½ÕâÒ»µã£¬Ê×ÏÈÓÃstatº¯ÊýµÃµ½ÕâЩʱ¼ä£¬È»ºó½Ø¶ÌÎļþ£¬×îºóÔÙ
ÓÃutime
º¯Êý¸´ÖÃÕâÁ½¸öʱ¼ä¡£ª¤ª¤ª¤
³ÌÐò4ª±6¡þutimeº¯ÊýµÄʵÀýª¤
ÒÔÏÂÁз½Ê½ÔËÐгÌÐò4ª±6£ºª¥
$ ls -1 changemod times¡þ¹Û²ì³¤¶ÈºÍ×îºóÐÞ¸Äʱ¼äª¥
-rwxrwxr-x 1 stevens 24676 Dec 4 16:13 changemodª¥
-rwxrwxr-x 1 stevens 24676 Dec 6 09:24 timesª¥
$ ls -lu changemod times¡þ¹Û²ì×îºó´æÈ¡Ê±¼äª¥
-rwxrwxr-x 1 stevens 24676 Feb 1 12:44 changemodª¥
-rwxrwxr-x 1 stevens 24676 Feb 1 12:44 timesª¥
$ date¡þ´òÓ¡½ñÌìÈÕÆÚª¥
Sun Feb 3 18:22:33 MST 1991ª¥
$ aª±out changemod times¡þÔËÐгÌÐò4ª±6ª¥
$ ls -1 changemod times¡þ¼ì²é½á¹ûª¥
-rwxrwxr-x 1 stevens 0 Dec 4 16:13 changemodª¥
-rwxrwxr-x 1 stevens 0 Dec 6 09:24 timesª¥
$ ls -lu changemod times¡þ¼ì²é×îºó´æÈ¡Ê±¼äª¥
-rwxrwxr-x 1 stevens 0 Feb 1 12:44 changemodª¥
-rwxrwxr-x 1 stevens 0 Feb 1 12:44 timesª¥
$ ls -lc changemod times¡þ¸ü¸Ä״̬ʱ¼äª¥
-rwxrwxr-x 1 stevens 0 Feb 3 18:23 changemodª¥
-rwxrwxr-x 1 stevens 0 Feb 3 18:23 timesª¤
ÕýÈçÎÒÃÇËùÓèÁϵÄÒ»Ñù£¬×îºóÐÞ¸Äʱ¼äºÍ×îºó´æÈ¡Ê±¼äδ±ä¡£µ«ÊÇ£¬¸ü¸Ä״̬ʱ¼ä
Ôò¸ü¸ÄΪ
³ÌÐòÔËÐÐʱµÄʱ¼ä¡£(ÕâÁ½¸öÎļþµÄ×îºó´æÈ¡Ê±¼äÏàͬµÄÔÒòÊÇ£¬ÕâÊÇËüÃǵÄĿ¼
ÓÃtarÃüÁî
¹éµµÊ±µÄʱ¼ä¡£)ª¤
4ª±20¡þmkdirºÍrmdirº¯Êýª¥
ÓÃmkdirº¯Êý´´½¨Ä¿Â¼£¬ÓÃrmdirº¯Êýɾ³ýĿ¼¡£ª¥
#include<sys/typesª±h>ª¥
#include<sys/statª±h>ª¥
int mkdir(const char *ª«pathname,ª«mode ¼£Ã£Ä££ª³£²¡½t ª«modeª«);ª¥
·µ»Ø£ºÈô³É¹¦Îª0£¬³ö´íΪ££±ª¤
´Ëº¯Êý´´½¨Ò»¸öеĿÕĿ¼¡£ª±ºÍª±ª±Ä¿Â¼ÏîÊÇ×Ô¶¯´´½¨µÄ¡£ËùÖ¸¶¨µÄÎļþ´æÈ¡Ðí
¿ÉÊýmode
,Óɽø³ÌµÄÎļþ·½Ê½´´½¨ÆÁ±Î×ÖÐ޸ġ£ª¥
³£¼ûµÄ´íÎóÊÇÖ¸¶¨ÓëÎļþÏàͬµÄmode(Ö»Ö¸¶¨¶Á¡¢Ð´Ðí¿ÉȨ)¡£µ«ÊÇ£¬¶ÔÓÚĿ¼ÎÒÃÇ
³£ÖÁÉÙÒª
ÉèÖÃ1¸öÖ´ÐÐÐí¿ÉȨ룬ÒÔÔÊÐí´æÈ¡¸ÃĿ¼ÖеÄÎļþÃû¡£(¼ûÁ·Ï°4ª±18¡£)ª¥
°´ÕÕ4ª±6½ÚÖÐÌÖÂ۵ĹæÔò£¬ÉèÖÃÐÂĿ¼µÄÓû§IDºÍ×éID¡£ª¥
SVR4ҲʹÐÂĿ¼¼Ì³Ð¸¸Ä¿Â¼µÄÉèÖÃÒ»×é ¼£Ã£Ä££ª³£²¡½IDλ¡£Õâ¾ÍʹµÃÔÚÐÂĿ¼ÖÐ
´´½¨µÄÎÄ
¼þ½«¼Ì³Ð¸ÃĿ¼µÄ×éID¡£ª¥
4ª±3+BSD²¢²»ÒªÇó¼Ì³Ð´ËÉèÖÃÒ»×é ¼£Ã£Ä££ª³£²¡½ID룬ÒòΪ²»ÂÛÉèÖÃÒ»×é £Ã£Ä
£ª³£²¡½
IDλÈçºÎ£¬Ð´´½¨µÄÎļþºÍĿ¼×ÜÊǼ̳и¸Ä¿Â¼µÄ×é ¼£Ã£Ä££ª³£²¡½ID¡£ª¥
ÔçÆÚµÄUnix°æ±¾²¢Ã»ÓÐmkdirº¯Êý£¬ËüÊÇÓÉ4ª±2BSDºÍSVR3Òý½øµÄ¡£ÔÚÔçÆÚ°æ±¾ÖУ¬
½ø³ÌÒªµ÷
ÓÃmknodº¯ÊýÒÔ´´½¨Ò»¸öÐÂĿ¼¡£µ«ÊÇÖ»Óг¬¼¶Óû§½ø³Ì²ÅÄÜʹÓÃmknodº¯Êý¡£ÎªÁË
±ÜÃâÕâÒ»
µã£¬´´½¨Ä¿Â¼µÄÃüÁîmkdir(1)±ØÐëÓɸù(root)ÓµÓУ¬¶øÇÒ´ò¿ªÁËÆäÉèÖÃÒ»Óû§¡¼£Ã
Ä££ª³£²
¡½IDλ¡£½ø³ÌΪÁË´´½¨Ò»¸öĿ¼£¬±ØÐëÓÃsystem(3)º¯Êýµ÷ÓÃmkdirÃüÁî(1)¡£ª¥
ÓÃrmdirº¯Êý¿ÉÒÔɾ³ýÒ»¸ö¿ÕĿ¼¡£ª¥
#include<unistdª±h>ª¥
int rmdir(const char *ª«pathname);ª«ª¥
·µ»Ø£ºÈô³É¹¦Îª0£¬³ö´íΪ££±ª¤
Èç¹û´Ëµ÷ÓÃʹĿ¼µÄÁ¬½Ó¼ÆÊý³ÉΪ0£¬²¢ÇÒҲûÓÐÆäËü½ø³Ì´ò¿ª´ËĿ¼£¬ÔòÊÍ·ÅÓÉ
´ËĿ¼ռ
ÓõĿռ䡣Èç¹ûÔÚÁ¬½Ó¼ÆÊý´ïµ½0ʱ£¬ÓÐÒ»¸ö»ò¼¸¸ö½ø³Ì´ò¿ªÁË´ËĿ¼£¬ÔòÔڴ˺¯
Êý·µ»ØÇ°
ɾ³ý×îºóÒ»¸öÁ¬½Ó£¬É¾³ýª±ºÍª±ª±Ïî¡£ÁíÍ⣬ÔÚ´ËĿ¼Öв»ÄÜÔÙ´´½¨ÐÂÎļþ¡£µ«ÊÇ
ÔÚ×îºóÒ»
¸ö
½ø³Ì¹Ø±ÕËü֮ǰ²¢²»ÊÍ·Å´ËĿ¼¡£(¼´Ê¹Ä³Ð©½ø³Ì´ò¿ª¸ÃĿ¼£¬ËüÃÇÔÚ´ËĿ¼Ï£¬
ÒòΪΪʹr
mdirº¯Êý³É¹¦Ö´ÐУ¬¸ÃĿ¼±ØÐëÊǿյġ£)ª¤
4ª±21¡þ¶ÁĿ¼ª¥
¶Ôij¸öĿ¼¾ßÓжÁȡȡÊýµÄÈÎÒ»Óû§¶¼¿É¶Á¸ÃĿ¼¡£µ«ÊÇÖ»ÓÐϵͳºË²ÅÄÜдĿ¼(
·ÀÖ¹Îļþ
ϵͳ·¢Éú»ìÂÒ)¡£»ØÒä4ª±5½Ú£¬Ò»¸öĿ¼µÄд´æÈ¡ÊýÏÞλºÍÖ´ÐÐÊýÏÞλ¾ö¶¨ÁËÔÚ¸Ã
Ŀ¼ÖÐÄÜ
·ñ´´½¨ÐÂÎļþÒÔ¼°É¾³ýÎļþ£¬ËüÃDz¢²»±íʾÄÜ·ñдĿ¼±¾Éí¡£ª¥
Ŀ¼µÄʵ¼Ê¸ñʽÒÀÀµÓÚUnixµÄ¾ßÌåʵÏÖ¡£ÔçÆÚµÄϵͳ£¬ÀýÈçVersion 7£¬ÓÐÒ»¸ö±È
½Ï¼òµ¥µÄ
½á¹¹£ºÃ¿¸öĿ¼ÏîÊÇ16¸ö×Ö½Ú£¬ÆäÖÐ14¸ö×Ö½ÚÊÇÎļþÃû£¬2¸ö×Ö½ÚÊÇi ¼£Ã£Ä££ª³£²
¡½node±à
ºÅÊý¡£¶ø¶ÔÓÚ4
ª±2BSD¶øÑÔ£¬ÓÉÓÚËüÔÊÐíÏ൱³¤µÄÎļþÃû£¬ËùÒÔÿ¸öĿ¼ÏîµÄ³¤¶ÈÊǿɱäµÄ¡£Õâ¾Í
Òâζ×ŶÁ
Ŀ¼µÄ³ÌÐòÓëϵͳÏà¹Ø¡£ÎªÁ˼ò»¯ÕâÖÖÇé¿öUNIXÏÖÔÚ°üº¬ÁËÒ»Ì×Óë¶ÁĿ¼ÓйصÄÀý
³Ì£¬ËüÃÇ
ÊÇPOSIXª±1µÄÒ»²¿·Ö¡£ª¥
#include<sys/typesª±h>ª¥
#include<direntª±h>ª¥
DIR *opendir(const char *ª«pathname);ª«ª¥
·µ»Ø£ºÈô³É¹¦ÎªÖ¸Õ룬³ö´íΪNULLª¥
struct dirent *readdir(DIR *ª«dp);ª«ª¥
·µ»Ø£ºÈô³É¹¦ÎªÖ¸Õ룬ÔÚĿ¼β»ò³ö´íΪNULLª¥
void rewinddir(DIR *ª«dpª«);ª¥
int closedir(DIR *ª«dpª«);ª¥
·µ»Ø£ºÈô³É¹¦Îª0£¬³ö´íΪ££±ª¤
»ØÒäһϣ¬ÎÒÃÇÔÚ³ÌÐò1ª±1ÖÐ(lsÃüÁîµÄ»ù±¾ÊµÏÖ²¿·Ö)ʹÓÃÁËÕâЩº¯Êý¡£ª¥
¶¨ÒåÔÚÍ·Îļþ<direntª±h>ÖеÄdirent½á¹¹ÊÇÓëʵÏÖÓйصġ£SVR4ºÍ4ª±3+BSD¶¨Òå
´Ë½á¹¹ÖÁ
ÉÙ°üº¬ÏÂÁÐÁ½¸ö³ÉÔ±£ºª¤
struct dirent {ª¥
ino ¼£Ã£Ä££ª³£²¡½t d ¼£Ã£Ä££ª³£²¡½ino;/*i-½ÚµãºÅ*/ª¥
char d ¼£Ã£Ä££ª³£²¡½name¡²NAME ¼£Ã£Ä££ª³£²¡½MAX+1¡³;/*ÒÔnull·ûÖÕÖ¹µÄÎļþ
Ãû*/ª¤
}ª¥
POSIXª±1²¢Ã»Óж¨Òåd ¼£Ã£Ä££ª³£²¡½ino,ÒòΪÕâÊÇÒ»¸öʵÏÖÌØÕ÷¡£POSIXª±1ÔÚ´Ë
½á¹¹ÖÐÖ»
¶¨Òåd ¼£Ã£Ä££ª³£²¡½nameÏî¡£ª¥
×¢Ò⣬SVR4ûÓеÄNAME ¼£Ã£Ä££ª³£²¡½MAX¶¨ÒåΪһ¸ö³£Êý-ÆäÖµÒÀÀµÓÚ¸ÃĿ¼ËùÔÚ
µÄÎļþ
ϵͳ£¬²¢ÇÒͨ³£
¿ÉÓÃfpathconfº¯ÊýÈ¡µÃ¡£ÔÚBSDÀàÎļþϵͳÖУ¬NAME ¼£Ã£Ä££ª³£²¡½MAXµÄ³£ÓÃÖµ
ÊÇ255¡£(
¼ûͼ2ª±7¡£)µ«
ÊÇ£¬ÒòΪÎļþÃûÊÇÒÔnull×Ö·û½áÊøµÄ£¬ËùÒÔÔÚÍ·ÎļþÖÐÈçºÎ¶¨ÒåÊý×éd-name²¢ÎÞ¶à
´ó¹ØÏµ¡£
ª¥
DIR½á¹¹ÊÇÒ»¸öÄÚ²¿½á¹¹£¬ËüÓÉÕâËĸöº¯ÊýÓÃÀ´±£´æÕý±»¶ÁµÄĿ¼µÄÓйØÐÅÏ¢¡£Æä
×÷ÓÃÀàËÆ
ÓÚFILE½á¹¹¡£FILE½á¹¹Óɱê×¼I/O¿âά»¤(ÎÒÃǽ«ÔÚµÚÎåÕÂÖÐ˵Ã÷)¡£ª¥
ÓÉopendir·µ»ØµÄÖ¸ÏòDIR½á¹¹µÄÖ¸ÕëÓÉÁíÍâÈý¸öº¯ÊýʹÓá£opendirÖ´Ðгõʼ»¯²Ù
×÷£¬Ê¹µÚ
Ò»¸öreaddir¶ÁĿ¼ÖеĵÚÒ»¸öĿ¼Ïî¡£ÔÚĿ¼Öи÷Ŀ¼ÏîµÄ˳ÐòÊÇÓëʵÏÖÓйصÄ
¡£ËüÃÇͨ
³£²¢²»Êǰ´×Öĸ˳ÐòÅÅÁеġ£ª¤
ʵÀýª¥
ÎÒÃǽ«Ê¹ÓÃÕâЩĿ¼Àý³Ì±àдһ¸öÖÜÓÎÎļþ²ã´Î½á¹¹µÄ³ÌÐò¡£ÆäÄ¿µÄÊǵõ½ÈçͬÎÒ
ÃÇÔÚͼ4
ª±2ÖÐËùʾµÄ¸÷ÖÖÀàÐ͵ÄÎļþÊý¡£³ÌÐò4ª±7Ö»ÓÐÒ»¸ö²ÎÊý£¬Ëü˵Ã÷Æðµã·¾¶Ãû£¬´Ó
¸Ãµã¿ªÊ¼
µÝ¹é½µÐòÖÜÓÎÎļþ²ã´Î½á¹¹¡£ÏµÍ³VÌṩÁËÒ»¸öʵ¼ÊÖÜÓδ˲ã´Î½á¹¹µÄº¯Êýftw(3)
£¬¶ÔÓÚÿ
Ò»¸öÎļþËü¶¼µ÷ÓÃÒ»¸öÓû§¶¨Ò庯Êý¡£´Ëº¯ÊýµÄÎÊÌâÊÇ£º¶ÔÓÚÿһ¸öÎļþ£¬Ëü¶¼µ÷
ÓÃstatº¯
Êý£¬Õâ¾Íʹ³ÌÐò¸úËæ·ûºÅÁ¬½Ó¡£ÀýÈ磬Èç¹û´Óroot¿ªÊ¼£¬²¢ÇÒÓÐÒ»¸öÃûΪ/libµÄ·û
ºÅÁ¬½Ó£¬
ËüÖ¸Ïò/usr/lib,ÔòËùÓÐÔÚĿ¼/usr/libÖеÄÎļþ¶¼Á½´Î¼ÆÊý¡£ÎªÁ˾ÀÕýÕâÒ»µã£¬
SVR4Ìṩ
ÁËÁíÒ»¸öº¯Êýnftw(3)£¬Ëü¾ßÓÐÒ»¸öÍ£Ö¹¸úËæ·ûºÅÁ¬½ÓµÄ¿ÉÑ¡ÔñÏî¡£¾¡¹Ü¿ÉÒÔʹÓÃ
nftw£¬µ«
ÊÇΪÁË˵Ã÷Ŀ¼Àý³ÌµÄʹÓ÷½·¨£¬ÎÒÃÇ»¹ÊDZàдÁËÒ»¸ö¼òµ¥µÄÎļþÖÜÓγÌÐò¡£ª¤ª¤
ª¤
³ÌÐò4ª±7¡þµÝ¹é½µÐòÖÜÓÎĿ¼²ã´Î½á¹¹£¬²¢°´ÎļþÀàÐͼÆÊýª¥
ÔÚ³ÌÐòÖУ¬ÎÒÃÇÌṩÁ˱ÈËùÒªÇóµÄ¸ü¶àµÄͨÓÃÐÔ¡£ËùÒÔÕâÑù×öÊÇΪÁËÀýʾʵ¼Êftw
º¯ÊýµÄÓ¦
ÓÃÇé¿ö¡£ÀýÈ磬º¯Êýmyfunc×ÜÊÇ·µ»Ø0£¬µ«Êǵ÷ÓÃËüµÄº¯ÊýÈ´×¼±¸´¦Àí·Ç0·µ»Ø¡£ª¥
¹ØÓÚ½µÐòÖÜÓÎÎļþϵͳµÄ¸ü¶àÐÅÏ¢£¬ÒÔ¼°Ôںܶà±ê×¼UnixÃüÁî(find,ls,tarµÈ)ÖÐ
ʹÓÃÕâÖÖ
¼¼ÊõµÄÇé¿ö£¬Çë²ÎÔÄFowler,Korn¼°Vo¡²1989¡³¡£4ª±3+BSDÌṩÁËÒ»ÐÂÌ×µÄĿ¼ÖÜ
Óκ¯Êý-
Çë²ÎÔÄfts(3)ÊÖ²áÒ³¡£ª¤
4ª±22¡þChdir,fchdirºÍgetcwdº¯Êýª¥
ÿ¸ö½ø³ÌÓÐÒ»¸öµ±Ç°¹¤×÷Ŀ¼£¬´ËĿ¼ÊÇËÑË÷ËùÓÐÏà¶Ô·¾¶ÃûµÄÆðµã(СÒÔбÏß¿ª
ʼµÄ·¾¶
ÃûΪÏà¶Ô·¾¶Ãû)¡£µ±Óû§µÇ¼µ½Unixϵͳʱ£¬Æäµ±Ç°¹¤×÷Ŀ¼ͨ³£ÊÇ¿ÚÁî×ÖÎļþ
(/etc/pas
swd)ÖиÃÓû§¼Ç¼ÏîµÄµÚ6¸ö×Ö¶Î-Óû§µÄÆðʼĿ¼¡£µ±Ç°¹¤×÷Ŀ¼Êǽø³ÌµÄÒ»¸öÊô
ÐÔ£»Æð
ʼĿ¼ÔòÊǵǼÃûµÄÒ»¸öÊôÐÔ¡£½ø³Ìµ÷ÓÃchdir»òfchdirº¯Êý¿ÉÒÔ¸ü¸Äµ±Ç°¹¤×÷Ä¿
¼¡£ª¥
#include<unistdª±h>ª¥
int chdir(const char *ª«pathname);ª«ª¥
int fchdir(int ª«filedes);ª«ª¥
Á½¸öº¯ÊýµÄ·µ»Ø£ºÈô³É¹¦Îª0£¬³ö´íΪ££±ª¤
ÔÚÕâÁ½¸öº¯ÊýÖУ¬ÎÒÃÇ¿ÉÒÔ·Ö±ðÓÃpathname»ò´ò¿ªÎļþÃèÊö·ûÀ´Ö¸¶¨Ðµĵ±Ç°¹¤×÷
Ŀ¼¡£ª¥
fchdir²»ÊÇPOSIXª±1µÄËùÊô²¿·Ö£¬SVR4ºÍ4ª±3+BSDÔòÖ§³Ö´Ëº¯Êý¡£ª¤
ʵÀýª¥
ÒòΪµ±Ç°¹¤×÷Ŀ¼ÊÇÒ»¸ö½ø³ÌµÄÊôÐÔ£¬ËùÒÔËüÖ»Ó°Ïìµ÷ÓÃchdirµÄ½ø³Ì±¾Éí£¬¶ø²»
Ó°ÏìÆäËü
½ø³Ì¡£(ÎÒÃǽ«ÔÚµÚ°ËÕ½ÏÏêϸµØËµÃ÷½ø³ÌÖ®¼äµÄ¹ØÏµ¡£)Õâ¾ÍÒâζ×ųÌÐò4ª±8²¢²»
»á²úÉúÎÒ
ÃÇÏ£ÍûµÃµ½µÄºó¹û¡£Èç¹û±àÒë³ÌÐò4ª±8£¬²¢ÇÒµ÷ÓÃÆä¿ÉÖ´ÐÐÄ¿±ê´úÂëÎļþ£¬Ôò¿ÉÒÔ
µÃµ½ÏÂÁÐ
½á¹û£ºª¥
$ pwdª¥
/usr/libª¥
$ mycdª¥
chdir to/tmp succeededª¥
$ pwdª¥
/usr/libª¥
´ÓÖпÉÒÔ¿´³ö£¬Ö´ÐÐmyccl³ÌÐòµÄshellµÄµ±Ç°¹¤×÷Ŀ¼²¢Ã»Óиı䡣Óɴ˿ɼû£¬s
hellÓ¦µ±
Ö±½Óµ÷ÓÃchdirº¯Êý£¬ËùÒÔcdÃüÁîµÄÖ´ÐгÌÐòÖ±½Ó°üº¬ÔÚshell³ÌÐòÖС£ª¥
ÒòΪϵͳºË±£³ÖÓе±Ç°¹¤×÷Ŀ¼µÄ֪ʶ£¬ËùÒÔÎÒÃÇÓ¦ÄÜÈ¡Æäµ±Ç°Öµ¡£²»ÐÒµÄÊÇ£¬Ïµ
ͳºËΪÿ
¸ö½ø³ÌÖ»±£´æÆäµ±Ç°¹¤×÷Ŀ¼µÄi ¼£Ã£Ä££ª³£²¡½node±àºÅÒÔ¼°É豸±êʶ£¬ÏµÍ³ºË
²¢²»±£´æ
¸ÃĿ¼µÄÍêÕû·¾¶Ãû¡£ª¤ª¤ª¤
³ÌÐò4ª±8¡þchdirº¯ÊýµÄʵÀýª¥
ÎÒÃÇÐèÒªÒ»¸öº¯Êý£¬Ëü´Óµ±Ç°¹¤×÷Ŀ¼¿ªÊ¼£¬ÕÒµ½ÆäÉÏÒ»¼¶µÄĿ¼£¬È»ºó¶ÁÆäĿ¼
Ïֱµ½
¸ÃĿ¼ÏîÖеÄi ¼£Ã£Ä££ª³£²¡½node±àºÅÊýÓ빤×÷Ŀ¼i ¼£Ã£Ä££ª³£²¡½node±àºÅÊý
Ïàͬ£¬Õâ
ÑùµØ¾ÍÕÒµ½ÁËÆä¶ÔÓ¦µÄÎļþ¡£
°´ÕÕÕâÖÖ·½·¨£¬Öð²ãÉÏÒÆ£¬Ö±µ½Óöµ½¸ù(root),ÕâÑù¾ÍµÃµ½Á˵±Ç°¹¤×÷Ŀ¼µÄ¾ø¶Ô
·¾¶Ãû¡£
ºÜÐÒÔË£¬Ïִ溯Êýgetcwd¾ÍÊÇÌṩÕâÖÖ¹¦Äܵġ£ª¥
#include<unistdª±h>ª¥
char *getcwd(char *ª«bufª«,size ¼£Ã£Ä££ª³£²¡½t ª«sizeª«£©£»ª¥
·µ»Ø£ºÈô³É¹¦Îªbuf,³ö´íΪNULLª¤
Ïò´Ëº¯Êý´«µÝÁ½¸ö²ÎÊý£¬Ò»¸öÊÇ»º´æµØÖ·buf£¬ÁíÒ»¸öÊÇ»º´æµÄ³¤¶Èsize¡£¸Ã»º´æ
±ØÐëÓÐ×ã
¹»µÄ³¤¶ÈÒÔÈÝÄɾø¶Ô·¾¶ÃûÔÙ¼ÓÉÏÒ»¸önullÖÕÖ¹×Ö·û£¬·ñÔò³ö´í·µ»Ø¡£(Çë»ØÒä2ª±
5ª±7½ÚÖÐ
ÓйØÎª×î´ó³¤¶È·¾¶Ãû·ÖÅä¿Õ¼äµÄÌÖÂÛ¡£)ª¥
ijЩgetcwdʵÏÖÔÊÐíµÚÒ»¸ö²ÎÊýbufΪNULL¡£ÔÚÕâÖÖÇé¿öÏ£¬´Ëº¯Êýµ÷ÓÃmalloc¶¯
̬µØ·ÖÅäs
ize×Ö½ÚÊýµÄ¿Õ¼ä¡£Õâ²»ÊÇPOSIXª±1»òXPG3µÄËùÊô²¿·Ö£¬Ó¦Óè±ÜÃâ¡£ª¤
ʵÀýª¥
³ÌÐò4ª±9½«¹¤×÷Ŀ¼¸ü¸ÄÖÁÒ»¸öÌØ¶¨µÄĿ¼£¬È»ºóµ÷ÓÃgetcwd,×îºó´òÓ¡¸Ã¹¤×÷Ä¿
¼¡£Èç¹û
ÔËÐиóÌÐò£¬Ôò¿ÉµÃ£ºª¥
$ aª±outª¥
cwd=/var/spool/uucppublicª¥
$ ls -1/usr/spoolª¥
lrwxrwxrwx 1 root 12 Jan 31 07:57/usr/spool->ª±ª±/var/spoolª¤ª¤ª¤
³ÌÐò4ª±9¡þgetcwdº¯ÊýµÄʵÀýª¤
×¢Ò⣬chdir¸úËæ·ûºÅÁ¬½Ó(ÕýÈçÔÚͼ4ª±10ÖÐËùʾÄÇÑù)£¬µ«Êǵ±getcwdÑØÄ¿Â¼Ê÷ÉÏ
ËÝÓöµ½/v
ar/spoolĿ¼ʱ£¬Ëü²¢²»Á˽â¸ÃĿ¼ÓÉ·ûºÅÁ¬½Ó/usr/spoolËùÖ¸Ïò¡£ÕâÊÇ·ûºÅÁ¬½Ó
µÄÒ»ÖÖÌØ
ÐÔ¡£ª¤
4ª±23¡þÌØÊâÉ豸Îļþª¥
st ¼£Ã£Ä££ª³£²¡½devºÍst ¼£Ã£Ä££ª³£²¡½rdevÕâÁ½¸ö×ֶξ³£ÒýÆð»ìÏý£¬µ±ÔÚ11
ª±9½Ú±àд
ttynameº¯Êýʱ£¬ÎÒÃÇÐèҪʹÓÃÕâÁ½¸ö×ֶΡ£ÓйعæÔòÊǺܼòµ¥µÄ£ºª¥
¡¤Ã¿¸öÎļþϵͳ¶¼ÓÉÆäÖ÷¡¢´ÎÉ豸ºÅ¶øÎªÈËËùÖª¡£É豸ºÅËùÓõÄÊý¾ÝÀàÐÍÊÇ»ù±¾Ïµ
ͳÊý¾ÝÀà
ÐÍdev ¼£Ã£Ä££ª³£²¡½t¡£»ØÒäͼ4ª±7£¬Ò»¸öÅÌÇý¾³£°üº¬Èô¸É¸öÎļþϵͳ¡£ª¥
¡¤ÎÒÃÇͨ³£¿ÉÒÔʹÓÃÁ½¸ö´ó¶àÊýʵÏÖËù¶¨ÒåµÄºê£ºmajorºÍminorÀ´È¡µÃÖ÷¡¢´ÎÉ豸
ºÅ¡£Õâ¾Í
Òâζ×ÅÎÒÃÇÎÞÐè¹ØÐÄÕâÁ½¸öÊýÊÇÈçºÎ´æ·ÅÔÚÒ»¸ödevª±t¶ÔÏóÖеġ£ª¥
ÔçÆÚµÄϵͳÓÃ16λÕûÐÍ´æ·ÅÉ豸ºÅ£¬8λÓÃÓÚÖ÷É豸Ó룬8ºÅÓÃÓÚ´ÎÉ豸ºÅ¡£SVR4ʹ
ÓÃ32λ£»
14λÓÃÓÚÖ÷É豸ºÅ£¬18λÓÃÓÚ´ÎÉ豸ºÅ¡£4ª±3+BSDÔòʹÓÃ16λ£º8λÓÃÓÚÖ÷É豸ºÅ
£¬8λÓÃÓÚ
´ÎÉ豸ºÅ¡£ª¥
POSIXª±1˵Ã÷dev ¼£Ã£Ä££ª³£²¡½tÀàÐÍÊÇ´æÔڵ쬵«Ã»Óж¨ÒåËü°üº¬Ê²Ã´£¬»òÈçºÎ
È¡µÃÆäÄÚ
ÈÝ¡£´ó¶àÊýʵÏÖ¶¨ÒåÁ˺êmajorºÍminor£¬µ«ÔÚÄÇÒ»¸öÍ·ÎļþÖж¨ÒåËüÃÇÔòÓëʵÏÖÓÐ
¹Ø¡£ª¥
¡¤ÏµÍ³ÖÐÿ¸öÎļþÃûµÄst ¼£Ã£Ä££ª³£²¡½devÖµÊÇÎļþϵͳµÄÉ豸ºÅ£¬¸ÃÎļþϵͳ
°üº¬Á˸Ã
ÎļþÃûºÍÆä¶ÔÓ¦µÄi ¼£Ã£Ä££ª³£²¡½node¡£ª¥
¡¤Ö»ÓÐ×Ö·ûÌØÊâÎļþºÍ¿éÌØÊâÎļþ²ÅÓÐst ¼£Ã£Ä££ª³£²¡½rdevÖµ¡£´ËÖµ°üº¬¸Ãʵ¼Ê
É豸µÄÉè
±¸ºÅ¡£ª¤
ʵÀýª¥
³ÌÐò4ª±10Ϊÿ¸öÃüÁîÐвÎÊý´òÓ¡É豸ºÅ£¬ÁíÍ⣬Èô´Ë²ÎÊýÒýÖ¸µÄÊÇ×Ö·ûÌØÊâÎļþ
»ò¿éÌØÊâ
Îļþ£¬ÔòÒ²´òÓ¡¸ÃÌØÊâÎļþµÄst ¼£Ã£Ä££ª³£²¡½rdevÖµ¡£ª¤ª¤ª¤
³ÌÐò4ª±10¡þ´òÓ¡st ¼£Ã£Ä££ª³£²¡½devºÍst ¼£Ã£Ä££ª³£²¡½rdevÖµª¥
ÔÚSVR4ÖУ¬ÎªÁ˶¨ÒåºêmajorºÍminor£¬Ò»¶¨Òª°üÀ¨Í·Îļþ<sys/sysmacroª±h>¡£ÔË
Ðд˳ÌÐò
µÃµ½ÏÂÃæµÄ½á¹û£ºª¥
$ aª±out//home/stevens/dev/tty£Ûab£Ýª¥
/:dev=7/0ª¥
/home/stevens:dev=7/7ª¥
/dev/ttya:dev=7/0(character)rdev=12/0ª¥
/dev/ttyb:dev=7/0(character)rdev=12/1ª¥
$ mountª¥
/dev/sd0a on /ª¥
/dev/sd0h on/homeª¥
$ ls -1/dev/sd0£Ûah£Ý/dev/tty£Ûab£Ýª¥
brw-r----- 1 root 7,0 Jan 31 08:23/dev/sd0aª¥
brw-r----- 1 root 7,7 Jan 31 08:23/dev/sd0hª¥
crw-rw-rw- 1 root 12,0 Jan 31 08:22/dev/ttyaª¥
crw-rw-rw- 1 root 12,1 Jul 9 10:11/dev/ttybª¤
´«µÝ¸ø¸Ã³ÌÐòµÄÍ·Á½¸ö²ÎÊýÊÇĿ¼(¸ùºÍ/home/stevens),ºóÁ½¸öÊÇÉ豸Ãû/dev/tt
g£Ûab£Ý£¬
ÕâÁ½¸öÉ豸ÊÇ×Ö·ûÌØÊâÉ豸¡£´Ó³ÌÐòµÄÊä³ö¿É¼û£¬¸ùĿ¼ºÍ/home/stevenĿ¼µÄÉè
±¸ºÅ²»Í¬
£¬Õâ±íʾËüÃÇλÓÚ²»Í¬µÄÎļþϵͳÖС£ÔËÐÐmountÃüÁîÖ¤Ã÷ÁËÕâÒ»µã¡£È»ºóÎÒÃÇÓÃ
lsÃüÁî²é
¿´ÓÉmountÃüÁ¸æµÄÁ½¸öÅÌÉ豸£¬ºÍÁ½¸öÖÕ¶ËÉ豸¡£ÕâÁ½¸öÅÌÉ豸ÊÇ¿éÌØÊâÉ豸
£¬ÃæÏò¸ö
ÖÕ¶ËÉ豸ÔòÊÇ×Ö·ûÌØÊâÉ豸¡£(ͨ³££¬Ö»ÓпéÌØÊâÉ豸²ÅÄܰüº¬Ëæ»ú´æÈ¡Îļþϵͳ
£¬ËüÃÇÊÇ
£ºÓ²¡¢ÈíÅÌÇý¶¯Æ÷ºÍCD-ROMµÈ¡£UnixµÄ½ÏÀϰ汾֧³Ö´Å´ø´æ·ÅÎļþϵͳ£¬µ«Õâ´Óδ
¹ã·ºÊ¹ÓÃ
¹ý¡£)×¢Ò⣬Á½¸öÖÕ¶ËÉ豸µÄÎļþÃûºÍi-nodeÔÚÉ豸I/OÉÏ(st ¼£Ã£Ä££ª³£²¡½dev£¬
ÕâÊǸùÎÄ
¼þϵͳ£¬Ëü°üº¬ÁË/devÎļþϵͳ)£¬µ«ÊÇËüÃǵÄʵ¼ÊÉ豸ºÅÊÇ£º12/0ºÍ12/1¡£ª¤
4ª±24¡þsyncºÍfsyncº¯Êýª¥
´«Í³µÄUnixʵÏÖÔÚϵͳºËÖÐûÓлº³å´æ´¢Æ÷£¬´ó¶àÊý´ÅÅÌI/O¶¼Í¨¹ý»º´æ½øÐС£µ±
½»Êý¾Ýд
µ½ÎļþÉÏʱ£¬Í¨³£¸ÃÊý¾ÝÏÈÓÉϵͳºË¸´ÖƵ½ÆäÒ»¸ö»º´æÖУ¬Èç¹û¸Ã»º´æÉÐδдÂú£¬
Ôò²¢²»½«
ÆäÅÅÈëÊä³ö¶ÓÁУ¬¶øÊǵȴýÆäдÂú»òÕßµ±ÏµÍ³ºËÐèÒªÖØÓøûº´æÒÔ±ã´æ·ÅÆäËüÅÌ¿é
Êý¾Ýʱ£¬
ÔÙ½«¸Ã»º´æÅÅÈëÊä³ö¶ÓÁУ¬È»ºó´ýÆäµ½´ï¶Óǰʱ£¬²Å½øÐÐʵ¼ÊµÄI/O²Ù×÷¡£ÕâÖÖÊä
³ö·½Ê½±»
³ÆÖ®ÎªÑÓ³Ùд¡£ÑÓ³Ùд¼õÉÙÁËÏõ»ù¶Áд´ÎÊý£¬µ«ÊÇÈ´½µµÍÁËÎļþÄÚÈݵĸüÐÂËÙ¶È£¬
ʹµÃÓûд
µ½ÎļþÖеÄÊý¾ÝÔÚÒ»¶Îʱ¼äÄÚ²¢Ã»ÓÐдµ½Ïõ»ùÉÏ¡£µ±ÏµÍ³·¢Éú¹ÊÕÏʱ£¬ÕâÖÖÑÓ³Ù¿É
ÄÜÔì³ÉÎÄ
¼þ¸üÐÂÄÚÈݵĶªÊ§¡£ÎªÁ˱£Ö¤´ÅÅÌÉÏʵ¼ÊÎļþϵͳÓ뻺´æÖÐÄÚÈݵÄÒ»ÖÂÐÔ£¬UNIXϵ
ͳÌṩÁË
sgncºÍfsync¶þ¸öϵͳµÄÓú¯Êý¡£ª¥
#include<unistdª±h>ª¥
void sync(void);ª¥
int fsync(int ª«filedes);ª«ª¥
·µ»Ø£ºÈô³É¹¦Îª0£¬³ö´íΪ££±ª¤
syncÖ»Êǽ«ËùÓÐÐ޸ĹýµÄ¿éµÄ»º´æÅÅÈëд¶ÓÁУ¬È»ºó¾Í·µ»Ø£¬Ëü²¢²»µÈ´ýʵ¼ÊI/O
²Ù×÷½áÊø
¡£ª¥
ϵͳ¾«Áé½ø³Ì(ͨ³£³ÆÎªupdate)Ò»°ãÿ¸ô30Ãëµ÷ÓÃÒ»´Îsyncº¯Êý¡£Õâ¾Í±£Ö¤Á˶¨ÆÚ
Ë¢ÐÂϵͳ
ºËµÄ¿é»º´æ¡£ÃüÁîsync(1)Ò²µ÷ÓÃsyncº¯Êý¡£ª¥
º¯ÊýfsyncÖ»ÒýÓõ¥¸öÎļþ(ÓÉÎļþÃèÊö·ûfiledesÖ¸¶¨)£¬ËüµÈ´ýI/O½áÊø£¬È»ºó·µ
»Ø¡£fsync
¿ÉÓÃÓÚÊý¾Ý¿âÕâÑùµÄÓ¦ÓóÌÐò£¬ÔÚÈ·±£Ð޸ĹýµÄ¿éÁ¢¼´Ð´µ½´ÅÅÌÉÏ¡£±È½ÏÒ»ÏÂfsy
ncºÍO¡¼£Ã
Ä££ª³£²¡½SY
NC±êÖ¾(¼û3ª±13½Ú)¡£µ±µ÷ÓÃfsyncʱ£¬Ëü¸üÐÂÎļþµÄÄÚÈÝ£¬¶ø¶ÔÓÚO ¼£Ã£Ä££ª³£²
¡½SYNC£¬
ÔòÊÇÿ´Î¶ÔÎļþµ÷ÓÃwriteº¯Êýʱ¾Í¸üÐÂÎļþµÄÄÚÈÝ¡£ª¥
SVR4ºÍ4ª±3+BSDÁ½Õß¶¼Ö§³ÖsyncºÍfsync,ËüÃǶ¼²»ÊÇPOSIXª±1µÄ×é³É²¿·Ö£¬µ«XPG
3ÒªÇófsync¡£ª¤
4ª±25¡þÎļþ´æÈ¡Ðí¿ÉÊýλժҪª¥
ÎÒÃÇÒÑע˵Ã÷ÁËËùÓÐÎļþ´æÈ¡Êý룬ÆäÖÐijЩλÓжàÖÖÓÃ;¡£Í¼4ª±14ÕªÒªÁгöÁË
ËùÓÐÕâЩÐí¿ÉÊý룬ÒÔ¼°ËüÃÇ¶ÔÆÕͨÎļþºÍĿ¼ÎļþµÄ×÷Óᣪ¤ª¤ª¤
ͼ4ª±14¡þÎļþ´æÈ¡ÊýλժҪª¥
×îºó9¸ö³£Êý·Ö³É3×é¡£ª¥
S ¼£Ã£Ä££ª³£²¡½IRWXU=S+IRUSR£üS ¼£Ã£Ä££ª³£²¡½IWUSR£üS ¼£Ã£Ä££ª³£²¡½IXUS
Rª¥
S ¼£Ã£Ä££ª³£²¡½IRWXG=S+IRGRP£üS ¼£Ã£Ä££ª³£²¡½IWGRP£üS ¼£Ã£Ä££ª³£²¡½IXGR
Pª¥
S ¼£Ã£Ä££ª³£²¡½IRWXO=S+IROTH£üS ¼£Ã£Ä££ª³£²¡½IWOTH£üS ¼£Ã£Ä££ª³£²¡½IXOT
Hª¤
4ª±26¡þÕªÒªª¥
±¾ÕÂÄÚÈÝÎ§ÈÆstatº¯Êý£¬Ïêϸ½éÉÜÁËstat½á¹¹ÖеÄÿһ¸ö³ÉÔ±¡£ÕâʹÎÒÃǶÔUnixÎÄ
¼þµÄ¸÷¸öÊôÐÔ¶¼ÓÐËùÁ˽⡣¶ÔÎļþµÄËùÓÐÊôÐÔÒÔ¼°¶ÔÎļþ½øÐвÙ×÷µÄËùÓк¯ÊýÓÐÍê
ÕûµÄÁ˽â¶Ô¸÷ÖÖUnix³ÌÐòÉè¼ÆÊǷdz£ÖØÒªµÄ¡£[LM]
--
--
¡ù À´Ô´:¡¤BBS ˮľÇ廪վ smth.org¡¤[FROM: 166.111.136.178]
BBSˮľÇ廪վ¡Ã¾«»ªÇø