BBSˮľÇ廪վ¡Ã¾«»ªÇø
·¢ÐÅÈË: forest (ÇẮС¥~~С¼ªÆª), ÐÅÇø: Unix
±ê Ìâ: [×ªÔØ]unix»·¾³¸ß¼¶±à³Ì-6 (×ªÔØ)
·¢ÐÅÕ¾: BBS ˮľÇ廪վ (Fri Mar 17 17:50:40 2000)
¡¾ ÒÔÏÂÎÄ×Ö×ªÔØ×Ô Linux ÌÖÂÛÇø ¡¿
¡¾ ÔÎÄÓÉ SuperSB Ëù·¢±í ¡¿
·¢ÐÅÈË: taosm (128+64-->cool), ÐÅÇø: unix
±ê Ìâ: unix»·¾³¸ß¼¶±à³Ì--µÚ6Õ ϵͳÊý¾ÝÎļþºÍÐÅÏ¢
·¢ÐÅÕ¾: Î÷Ê®°ËBBS (Fri Mar 10 13:15:45 2000), תÐÅ
£È£Ô¡½µÚÁùÕ¡þϵͳÊý¾ÝÎļþºÍÐÅÏ¢ª¥
6ª±1¡þÒýÑÔª¥
Óкܶà²Ù×÷ÐèҪʹÓÃһЩÓëϵͳÓйصÄÊý¾ÝÎļþ£¬ÀýÈ磬¿ÚÁî×ÖÎļþ/etc/passwc
lºÍ×éÎļþ
/etc/group¾ÍÊǾ³£ÓɶàÖÖ³ÌÐòʹÓõÄÁ½¸öÎļþ¡£Óû§Ã¿´ÎµÇ¼ÈëUnixϵͳʱ£¬ÒÔ
¼°Ã¿´ÎÖ´
ÐÐls-lÃüÁîʱ¶¼ÒªÊ¹ÓÿÚÁî×ÖÎļþ¡£ª¥
ÓÉÓÚÀúÊ·ÔÒò£¬ÕâЩÊý¾ÝÎļþ¶¼ÊÇASCIIÎı¾Îļþ£¬²¢ÇÒʹÓñê×¼I/O¿â¶ÁÕâЩÎļþ
¡£µ«ÊÇ£¬
¶ÔÓڽϴóµÄϵͳ£¬Ë³ÐòɨÃè¿ÚÁî×ÖÎļþ±äµÃºÜ»¨·Ñʱ¼ä£¬ÎÒÃÇÏëÒÔ·ÇASCIIÎı¾¸ñ
ʽ´æ·ÅÕâ
ЩÎļþ£¬µ«ÈÔÏòÓ¦ÓóÌÐòÌṩһ¸ö¿ÉÒÔ´¦ÀíÈκÎÒ»ÖÖÎļþ¸ñʽµÄ½çÃæ¡£¶ÔÓÚÕâЩÊý
¾ÝÎļþµÄ
¿ÉÒÆÖ²½çÃæÊDZ¾ÕµÄÖ÷Ìâ¡£±¾ÕÂÒ²°üÀ¨ÁËϵͳ±êʶº¯Êý¡¢Ê±¼äºÍÈÕÆÚº¯Êý¡£ª¥
6ª±2¡þ¿ÚÁî×ÖÎļþª¥
Unix¿ÚÁî×ÖÎļþ(POSIXª±1Ôò½«Æä³ÆÎªÓû§Êý¾Ý¿â)°üº¬ÁËͼ6ª±1ÖÐËùʾµÄ¸÷×ֶΣ¬
ÕâЩ×Ö¶Î
°üº¬ÔÚ<pwdª±h>Öж¨ÒåµÄpasswd½á¹¹ÖС£ª¥
×¢Ò⣬POSIXª±1Ö»Ö¸¶¨passwd½á¹¹ÖÐ7¸ö×Ö¶ÎÖеÄ5¸ö¡£ÁíÍâ2¸öÔªËØÓÉSVR4ºÍ4ª±3
+BSDÖ§³Ö
¡£ª¥ª¥ª¥P146ª¥
ͼ6ª±1¡þ/etc/passwdÎļþÖеÄ×ֶΪ¥
ÓÉÓÚÀúÊ·ÔÒò£¬¿ÚÁî×ÖÎļþÊÇ/etc/passwd£¬¶øÇÒÊÇÒ»¸öÎı¾Îļþ¡£Ã¿Ò»Ðаüº¬Í¼
6ª±1ÖÐËù
ʾµÄ7¸ö×ֶΣ¬×Ö¶ÎÖ®¼äÓÃðºÅÏà·Ö¸ô¡£ÀýÈ磬¸ÃÎļþÖпÉÄÜÓÐÏÂÁÐÈýÐУºª¥
root:jheVopR58x9Fx:0:1:The superuser:/:/bin/shª¥
nobody:*:65534:65534::/:ª¥
stevens:3hKVD8R58r9Fx:224:20:Richard Stevens:/home/stevens:/bin/kshª¥
¹ØÓÚÕâЩ¼Ç¼ÏîÇë×¢ÒâÏÂÁи÷µã£ºª¥
¡¤Í¨³£ÓÐÒ»¸ö¼Ç¼ÏÆäÓû§ÃûΪroot¡£´Ë¼Ç¼ÏîµÄÓû§IDÊÇO(³¬¼¶Óû§)¡£ª¥
¡¤ÃÜÂë¿ÚÁî×Ö×ֶΰüº¬Á˾µ¥ÏòÃÜÂëµ¥·¨´¦Àí¹ýµÄÓû§¿ÚÁî×Ö¸±±¾¡£ÒòΪ´ËËã·¨ÊÇ
µ¥Îʵģ¬
ËùÒÔÎÒÃDz»ÄÜ´ÓÃÜÂë¿ÚÁî×ֲ²⵽ÔÀ´µÄ¿ÚÁî×Ö¡£µ±Ç°Ê¹ÓõÄËã·¨(¼ûMorrisºÍTh
ompson¡²
£±£¹£·£¹¡³£©×ÜÊDzúÉú13¸ö¿É´òÓ¡×Ö·û(ÔÚ64×Ö·û¼¯¡²a-zA-Z0-9ª±1¡³ÖÐ)¡£ÒòΪ¶Ô
Óû§Ãûno
b
odyµÄ¼Ç¼µÄÃÜÂë¿ÚÁî×Ö¶ÎÖ»°üº¬Ò»¸ö×Ö·û(*)£¬ËùÒÔÃÜÂë¿ÚÁî×Ö¾ö²»»áÓë´ËÖµÏàÆ¥
Åä¡£´ËÓÃ
»§Ãû¿ÉÓÃÓÚÍøÂç·þÎñÆ÷£¬ÕâЩ·þÎñÆ÷ÔÊÐíÎÒÃǵǼµ½Ò»¸öϵͳ£¬µ«ÆäÓû§IDºÍ×éI
D(65534)
£¬²¢²»ÌṩÓÅÏÈȨ¡£ÒÔ´ËÓû§IDºÍ×éIDÎÒÃǿɴæÈ¡µÄÎļþÖ»ÊÇ´ó¼Ò¶¼¿É¶Á¡¢Ð´µÄÎÄ
¼þ¡£(Õâ
¼Ù¶¨Óû§ID65534ºÍ×éID65534²¢²»ÓµÓÐÈκÎÎļþ¡£)ÔÚ±¾½ÚÉԺ󲿷ÖÎÒÃǽ«ÌÖÂÛ¶Ô
¿ÚÁî×ÖÎÄ
¼þ×î½üËù×÷µÄ¸ü¸Ä(ÒõÓ°¿ÚÁî×Ö)¡£ª¥
¡¤ÔÚ¿ÚÁî×ÖÎļþ¼Ç¼ÖеÄijЩ×ֶοÉÄÜÊǿա£Èç¹ûÃÜÂë¿ÚÁî×Ö¶ÎΪ¿Õ£¬Õâͨ³£¾ÍÒâ
ζןÃÓÃ
»§Ã»ÓпÚÁî×Ö¡£(²»Ï£ÍûÕâÑù×ö¡£)nobody¼Ç¼ÓÐÁ½¸ö¿Õ°××ֶΣº×¢ÊÍ×ֶκͳõʼs
hell×Ö¶Î
¡£¿Õ°××¢ÊÍ×ֶβ»²úÉúÈκÎÓ°Ïì¡£¿Õ°×shell×Ö¶ÎÔò±íʾȡϵͳĬÈÏÖµ£¬Õâͨ³£ÊÇ
/bin/sh¡£
ª¥
¡¤Ö§³Öfinger(1)ÃüÁîµÄijЩUnixϵͳ֧³ÖÔÚ×¢ÊÍ×Ö¶ÎÖеĸ½¼ÓÐÅÏ¢¡£ÆäÖУ¬¸÷²¿
·ÖÖ®¼ä¶¼
ÓöººÅ·Ö¸ô£ºÓû§ÐÕÃû£¬°ì¹«Êҵص㣬°ì¹«Êҵ绰ºÅÂ룬¼ÒÍ¥µç»°ºÅÂë¡£ÁíÍ⣬Èç
¹ûÔÚ×¢ÊÍ
×Ö¶ÎÖеÄÓû§ÐÕÃûÊÇÒ»¸ö&£¬ÔòËü±»´ú»»ÎªµÇ¼Ãû¡£ÀýÈ磬¿ÉÒÔÓÐÏÂÁмǼ£ºª¤ª¥
stevens:3hKVD8R58r9Fx:224:20:Richard &,B232,555-1111,555-2222:/home/ste
vens:/bin
/kshª¥
¼´Ê¹ÄãËùʹÓõÄϵͳ²¢²»Ö§³ÖfingerÃüÁÕâЩÐÅÏ¢ÈÔ¿É´æ·ÅÔÚ×¢ÊÍ×Ö¶ÎÖУ¬ÒòΪ
¸Ã×Ö¶ÎÖ»
ÊÇÒ»¸ö×¢ÊÍ£¬²¢²»ÓÉϵͳ¹«ÓóÌÐò½âÊÍ¡£ª¥
POXIXª±1Ö»¶¨ÒåÁËÁ½¸ö´æÈ¡¿ÚÁî×ÖÎļþÖÐÐÅÏ¢µÄº¯Êý¡£ÔÚ¸ø³öÓû§µÇ¼Ãû»òÊýÖµÓÃ
»§IDºó£¬
ÕâÁ½¸öº¯Êý¾ÍÄܲ鿴Ïà¹Ø¼Ç¼¡£ª¥
#include <sys/typesª±h>ª¥
include <pwdª±h>ª¥
struct passwd *getpwuid(uid ¼£Ã£Ä££ª³£²¡½t ª«uidª«);ª¥
struct passwd *getpwnaw(const char *ª«nameª«);ª¥
Both return:pointer if OK,NULL on errorª¥
Á½¸öº¯Êý·´»Ø£º¿´³É¹¦ÎªÖ¸Õ룬³ö´íΪNULLª¥
getpwuidÓÉls(1)³ÌÐòʹÓã¬ÒԱ㽫°üº¬ÔÚÒ»¸öi-nodeÖеÄÊýÖµÓû§IDÓ³ÕÕΪÓû§
µÇ¼Ãû¡£g
etpwnawÔÚÎÒÃǼüÈëµÇ¼ÃûʱÓÉlogin(1)³ÌÐòʹÓᣪ¥
ÕâÁ½¸öº¯Êý¶¼·µ»ØÒ»¸öÖ¸Ïòpasswd½á¹¹µÄÖ¸Õ룬¸Ã½á¹¹ÒÑÓÉÕâÁ½¸öº¯ÊýÔÚÖ´ÐÐʱÌî
ÈëÁËËùÐè
µÄÐÅÏ¢¡£´Ë½á¹¹Í¨³£ÊÇÔÚÏà¹Øº¯ÊýÄڵľ²Ì¬±äÁ¿£¬Ö»Òªµ÷ÓÃÏà¹Øº¯Êý£¬ÆäÄÚÈݾͻá
±»ÖØÐ´¡£
ª¥
Èç¹ûÎÒÃÇÒª²é¿´µÄÖ»ÊÇÒ»¸öµÇ¼Ãû»òÒ»¸öÓû§ID£¬ÄÇôÕâÁ½¸öPOSIXª±1º¯ÊýÊÇÄÜÂú
×ãÒªÇóµÄ
£¬µ«ÊÇÒ²ÓÐЩ³ÌÐòÒª²é¿´Õû¸ö¿ÚÁî×ÖÎļþ¡£ÏÂÁÐÈý¸öº¯ÊýÔò¿ÉÓÃÓÚ´ËÖÖÄ¿µÄ¡£ª¥
#include <sys/typesª±h>ª¥
#include <pwdª±h>ª¥
struct passwd *getpwent(void);ª¥
Returns:pointer if OK,NULL on error or end of fileª¥
·µ»Ø£º¿´³É¹¦ÎªÖ¸Õ룬³ö´í»òÎļþβΪNULLª¤ª¥
void setpwent(void);ª¥
void endpwent(void);ª¥
POXIXª±1ûÓж¨ÒåÕâÈý¸öº¯Êý£¬µ«ËüÃÇÊܵ½SVR4ºÍ4ª±3+BSDµÄÖ§³Ö¡£ª¥
µ÷ÓÃgetpwentʱ£¬Ëü·µ»Ø¿ÚÁî×ÖÎļþÖеÄÏÂÒ»¸ö¼Ç¼¡£ÈçͬÉÏÃæËùÊöµÄÁ½¸öPOSIX
ª±1º¯ÊýÒ»
Ñù£¬Ëü·µ»ØÒ»¸öÓÉËüÌîдºÃµÄpasswd½á¹¹µÄÖ¸Õ롣ÿ´Îµ÷Óô˺¯Êýʱ¶¼ÖØÐ´¸Ã½á¹¹
¡£ÔÚµÚÒ»
´Îµ÷Óøú¯Êýʱ£¬Ëü´ò¿ªËüËùʹÓõĸ÷¸öÎļþ¡£ÔÚʹÓñ¾º¯Êýʱ£¬¶Ô¿ÚÁî×ÖÎļþÖÐ
¸÷¸ö¼Ç¼
°²ÅŵÄ˳Ðò²¢ÎÞÒªÇ󡣪¥
º¯Êýsetpwent·´ÈÆËüËùʹÓõÄÎļþ£¬endpwentÔò¹Ø±ÕÕâЩÎļþ¡£ÔÚʹÓÃgetpwent²é
¿´ÍêÁË¿Ú
Áî×ÖÎļþºó£¬Ò»¶¨Òªµ÷ÓÃendpwent¹Ø±ÕÕâЩÎļþ¡£getpwentÖªµÀʲôʱ¼äËüÓ¦µ±´ò
¿ªËüËùʹ
ÓõÄÎļþ(µÚÒ»´Î±»µ÷ÓÃʱ)£¬µ«ÊÇËü²¢²»ÄÜÖªµÀºÎʱ¹Ø±ÕÕâЩÎļþ¡£ª¥
ʵÀýª¥
³ÌÐò6ª±1ʾ³öÁ˺¯ÊýgetpwnamµÄÒ»¸öʵÏÖ¡£ª¥
³ÌÐò6ª±1¡þgetpwentº¯Êýª¥
P148ª¥
ÔÚ³ÌÐò¿ªÊ¼´¦µ÷ÓÃsetpwentÊDZ£»¤ÐԵĴëÊ©£¬ÒÔ±ãÔÚµ÷ÓÃÕßÔÚ´Ë֮ǰÒѾµ÷Óùýg
etpwentµÄ
Çé¿öÏ£¬·´ÈÆÓйØÎļþʹËüÃǶ¨Î»µ½Îļþ¿ªÊ¼´¦¡£getpwnawºÍgetpwuidÍê³Éºó²»Ó¦
ʹÓйØÎÄ
¼þÈÔ´¦ÓÚ´ò¿ª×´Ì¬£¬ËùÒÔÓ¦µ÷ÓÃendpwent¹Ø±ÕËüÃÇ¡£ª¥
6ª±3¡þÒõÓ°¿ÚÁî×Ö(Shadow Passwords)ª¥
ÔÚÉÏÃæÒ»½ÚÎÒÃÇÔøÌá¼°£¬¶ÔUnix¿ÚÁî×Öͨ³£Ê¹ÓõÄÃÜÂëËã·¨Êǵ¥ÏòËã·¨¡£¸ø³öÒ»¸ö
ÃÜÂë¿ÚÁî
×Ö£¬ÎÒÃÇÕÒ²»µ½Ò»ÖÖËã·¨¿ÉÒÔ½«Æä·´±ä»»µ½ÆÕͨÎı¾¿ÚÁî×Ö¡£(ÆÕͨÎı¾¿ÚÁî×ÖÊÇ
ÔÚPasswor
d:Ìáʾºó¼üÈëµÄ¿ÚÁî×Ö¡£)µ«ÊÇÎÒÃÇ¿ÉÒÔ¶Ô¿ÚÁî×Ö½øÐв²⣬½«²Â²âµÄ¿ÚÁî×Ö¾µ¥
ÏòËã·¨±ä
»»³ÉÃÜÂëÐγɣ¬È»ºó½«ÆäÓëÓû§µÄÃÜÂë¿ÚÁî×ÖÏà±È½Ï¡£Èç¹ûÓû§¿ÚÁî×ÖÊÇËæ»úÑ¡Ôñ
µÄ£¬ÄÇô
ÕâÖÖ·½·¨²¢²»ÊǺÜÓÐÓõġ£µ«ÊÇÓû§ÍùÍùÒÔ·ÇËæ»ú·½Ê½Ñ¡Ôñ¿ÚÁî×Ö(¶ÔżµÄÐÕÃû¡¢
½ÖÃû¡¢³è
ÎïÃûµÈ)¡£Ò»¸ö¾³£Öظ´µÄÊÔÑéÊÇÏȵõ½Ò»·Ý¿ÚÁî×ÖÎļþ£¬È»ºóÓÃÊÔ̽·½·¨²Â²â¿Ú
Áî×Ö¡£(Ga
rfinkelºÍSpaftord¡²£±£¹£¹£±¡³µÄµÚ¶þÕ¶ÔUnix¿ÚÁî×Ö¼°¿ÚÁî×ÖÃÜÂë´¦Àí·½°¸µÄ
ÀúÊ·Çé¿ö
¼°Ï¸½Ú½øÐÐÁË˵Ã÷¡£)ª¥
ΪʹÆóͼÕâÑù×öµÄÈËÄÑÒÔ»ñµÃÔʼ×ÊÁÏ(ÃÜÂë¿ÚÁî×Ö)£¬Ä³Ð©ÏµÍ³½«ÃÜÂë¿ÚÁî×Ö´æ·Å
ÔÚÁíÒ»¸ö
ͨ³£³ÆÎªÒõÓ°¿ÚÁî×ÖÎļþÖС£¸ÃÎļþÖÁÉÙÒª°üº¬Óû§ÃûºÍÃÜÂë¿ÚÁî×Ö¡£Óë¸Ã¿ÚÁî×Ö
Ïà¹ØµÄÆä
ËüÐÅÏ¢Ò²¿É´æ·ÅÔÚ¸ÃÎļþÖС£ÀýÈ磬¾ßÓÐÒõÓ°¿ÚÁî×ÖµÄϵͳ¾³£ÒªÇóÓû§ÔÚÒ»¶¨Ê±
¼ä¼ä¸ôºó
Ñ¡ÔñÒ»¸öпÚÁî×Ö¡£Õâ±»³ÆÖ®Îª¿ÚÁî×ÖʱЧ£¬ÒªÑ¡ÔñпÚÁî×ÖµÄʱ¼ä¼ä¸ô³¤¶È¾³£
Ò²´æ·ÅÔÚ
ÒõÓ°¿ÚÁî×ÖÎļþÖС£ª¥
ÔÚSVR4ÖУ¬ÒõÓ°¿ÚÁîÎļþÊÇ/etc/shadow¡£ÔÚ4ª±3+BSDÖУ¬ÃÜÂë¿ÚÁî×Ö´æ·ÅÔÚ/etc
/masterª±
passwdÖС£ª¥
ÒõÓ°¿ÚÁî×ÖÎļþ²»Ó¦ÊÇÒ»°ãÓû§¿ÉÒÔ¶ÁÈ¡µÄ¡£½öÓÐÉÙÊý¼¸¸ö³ÌÐòÐèÒª´æÈ¡ÃÜÂë¿ÚÁî
×ÖÎļþ£¬
ÀýÈçlogin(1)ºÍpasswd(1)£¬ÕâЩ³ÌÐò³£³£ÊÇÉèÖÃ-Óû§-IDΪroot¡£ÓÐÁËÒõÓ°¿ÚÁî
×Öºó£¬ÆÕ
ͨ¿ÚÁî×ÖÎļþ/etc/passwd¿ÉÓɸ÷Óû§×ÔÓɶÁÈ¡¡£ª¥
6ª±4¡þ×éÎļþª¥
Unix×éÎļþ(POSIXª±1³ÆÆäΪ×éÊý¾Ý¿â)°üº¬ÁËͼ6ª±2ÖÐËùʾ×ֶΡ£ÕâЩ×ֶΰüº¬ÔÚ
<grpª±h>
ÖÐËù¶¨ÒåµÄgroup½á¹¹ÖС£ª¥ª¥
P149ª¥ª¥ª¥
ͼ6ª±2¡þ/etc/groupÎļþÖеÄ×ֶΪ¥
POSIXª±1Ö»¶¨ÒåÁËÆäÖÐ3¸ö×ֶΡ£ÁíÒ»¸ö×Ö¶Îgr ¼£Ã£Ä££ª³£²¡½passwdÔòÓÉSVR4ºÍ
4ª±3+BSD
Ö§³Ö¡£ª¥
×Ö¶Îgr-memÊÇÒ»¸öÖ¸ÕëÊý×飬ÆäÖеÄÖ¸Õë¸÷Ö¸ÏòÒ»¸öÊôÓÚ¸Ã×éµÄÓû§Ãû¡£¸ÃÊý×éÒÔ
¿ÕÖ¸Õë(n
ull)½áβ¡£ª¥
ÎÒÃÇ¿ÉÒÔÓÃÏÂÁÐÁ½¸öÓÉposixª±1¶¨ÒåµÄº¯ÊýÀ´²é¿´×éÃû»òÊýÖµ×éI¡£ª¥
#include <sys/typesª±h>ª¥
#include <grpª±h>ª¥
struct group *getgrgid(gid ¼£Ã£Ä££ª³£²¡½t ª«gidª«);ª¥
struct group *getgrnam(const char *ª«nameª«);ª¥
Both return:pointer if OK,NULL on errorÁ½¸öº¯Êý·µ»Ø£ºÈô³É¹¦ÎªÖ¸Õ룬³ö´í
ΪNULLª¥
Èçͬ¶Ô¿ÚÁî×ÖÎļþ½øÐвÙ×÷µÄº¯ÊýÒ»Ñù£¬ÕâÁ½¸öº¯Êýͨ³£Ò²·µ»ØÖ¸ÏòÒ»¸ö¾²Ì¬±äÁ¿
µÄÖ¸Õ룬
ÔÚÿ´Îµ÷ÓÃʱ¶¼ÖØÐ´¸Ã¾²Ì¬±äÁ¿¡£ª¥
Èç¹ûÐèÒªËÑË÷Õû¸ö×éÎļþ£¬ÔòÐëʹÓÃÁíÍ⼸¸öº¯Êý¡£ÏÂÁÐÈý¸öº¯ÊýÀàËÆÓÚÕë¶Ô¿ÚÁî
×ÖÎļþµÄ
Èý¸öº¯Êý¡£ª¥
#include <sys/typesª±h>ª¥
#include <grpª±h>ª¥
struct group *getgrent(void);ª¥
Returns:Pointer if OK,NULL on error or end of fileª¥
·µ»Ø£ºÈô³É¹¦ÎªÖ¸Õ룬³ö´í»òÎļþβΪNULLª¥
void setgrent(void);ª¥
void endgrent(void);ª¥
ÕâÈý¸öº¯ÊýÓÉSVR4ºÍ4ª±3+BSDÌṩPOSIXª±1²¢Ä©¶¨ÒåÕâЩº¯Êý¡£ª¥
setgrent´ò¿ª×éÎļþ(ÈçÈôËüÉÐÄ©±»´ò¿ª)²¢·´ÈÆËü¡£getgrent´Ó×éÎļþÖжÁÏÂÒ»¸ö
¼Ç¼£¬Èç
Èô¸ÃÎļþÉÐÄ©´ò¿ªÔòÏÈ´ò¿ªËü¡£endgrent¹Ø±Õ×éÎļþ¡£ª¥
6ª±5¡þÌí¼Ó×éIDª¥
ÔÚUnixÖУ¬×éµÄʹÓÃÒѾ×÷ÁËЩ¸ü¸Ä¡£ÔÚVersion7ÖУ¬Ã¿¸öÓû§ÈκÎʱºò¶¼Ö»ÊôÓÚ
Ò»¸ö×é¡£
µ±Óû§µÇ¼ʱ£¬ÏµÍ³¾Í°´¿ÚÁî×ÖÎļþÖÐÓëÆäÏà¹Ø¼Ç¼ÖеÄÊý×Ö×éID£¬¸³¸øËûʵ¼Ê×é
ID¡£ÎÒÃÇ
¿ÉÒÔÔÚÈκÎʱºòÖ´ÐÐnewgrp(1)ÒÔ¸ü¸Ä×éID¡£Èç¹ûnewgrpÃüÁîÖ´Ðгɹ¦(¹ØÓÚÐí¿ÉȨ
¹æÔò£¬Çë
²ÎÔÄÊÖ²áÒ³¡£)£¬ÔòÎÒÃǵÄʵ¼Ê×éID¾Í¸ü¸ÄΪеÄ×éID£¬Ëü½«±»ÓÃÓÚºóÐøµÄÎļþ´æ
È¡Ðí¿ÉȨ
¼ì²é¡£Ö´Ðв»´øÈκβÎÊýµÄnewgrp£¬Ôò¿É·µ»Øµ½ÔÀ´µÄ×é¡£ª¥
ÕâÖÖ×éµÄ³ÉÔ±¹ØÏµÒ»Ö±Î¬³Öµ½1983Äê×óÓÒ¡£´Ëʱ£¬4ª±2BSDÒýÈëÁËÌí¼Ó×éIDµÄ¸ÅÄî
¡£ÎÒÃDz»
½öÊôÓÚÎÒÃǵĿÚÁî×ּǼÖÐ×éIDËù¶ÔÓ¦µÄ×飬Ҳ¿ÉÊôÓÚ¶àÖÁ16¸öÁíÍâµÄһЩ×é¡£ÎÄ
¼þ´æÈ¡È¨
¼ì²éÏàÓ¦ÐÞ¸ÄΪ£º²»½ö½«½ø³ÌµÄÓÐЧ×éIDÓëÎļþµÄ×éIDÏà±È½Ï£¬¶øÇÒÒ²½«ËùÓÐÌí¼Ó
×éIDÓëÎÄ
¼þµÄ×éID½øÐбȽϡ£ª¥
Ìí¼Ó×éIDÊÇPOSIXª±1µÄ¿ÉÑ¡ÌØÐÔ¡£³£ÊýNGROUPS ¼£Ã£Ä££ª³£²¡½MAX(ͼ2ª±7)¹æ¶¨ÁË
Ìí¼Ó×éID
µÄÊýÁ¿£¬Æä³£ÓÃÖµÊÇ16¡£Èç¹û²»Ö§³ÖÌí¼Ó×éID£¬Ôò´Ë³£ÊýֵΪO¡£ª¥
SVR4ºÍ4ª±3+BSD¶¼Ö§³ÖÌí¼Ó×éID¡£ª¥
FIPS 151-1ÒªÇóÖ§³ÖÌí¼Ó×éID£¬²¢ÒªÇóNGROUP ¼£Ã£Ä££ª³£²¡½MAXÖÁÉÙÊÇ8¡£ª¥
ʹÓÃÌí¼Ó×éIDµÄÓŵãÊÇÎÒÃDz»±ØÔÙÏÔʽµØ¾³£¸ü¸Ä×é¡£Ò»¸öÓû§³£³£»á²Î¼Ó¶à¸öÏî
Ä¿×飬Òò
´ËÒ²¾ÍҪͬʱÊôÓÚ¶à¸ö×é¡£ª¥
ΪÁË´æÈ¡ºÍÉèÖÃÌí¼Ó×éIDÌṩÁËÏÂÁÐÈý¸öº¯Êý£ºª¥
POSIXª±1ֻ˵Ã÷ÁËgetgroups¡£ÒòΪsetgroupsºÍinitgroupsÊÇÌØÈ¨²Ù×÷£¬ËùÒÔPos
ixª±1ûÓÐ
˵Ã÷ËüÃÇ¡£µ«ÊÇ£¬SVR4ºÍ4ª±3+BSDÖ§³ÖËùÓÐÕâÈý¸öº¯Êý¡£ª¥
getgroups½«½ø³ÌËùÊôÓû§µÄ¸÷Ìí¼Ó×éIDÌîдµ½Êý×ébgrouplistÖУ¬ÌîдÈë¸ÃÊý×é
µÄÌí¼Ó×éI
DÊý×î¶àΪgidsetsize¸ö¡£Êµ¼ÊÌîдµ½Êý×éÖеÄÌí¼Ó×éIDÊýÓɺ¯Êý·µ»Ø¡£Èç¹ûϵͳ
³£ÊýNGROU
P ¼£Ã£Ä££ª³£²¡½MAXΪ0£¬Ôò·µ»Ø0£¬Õâ²¢²»±íʾ³ö´í¡£ª¥
#include <sys/typesª±h>ª¥
#include <unistdª±h>ª¥
int getgroups(int ª«gidsetsizeª«,gid ¼£Ã£Ä££ª³£²¡½t ª«grouplistª«£Û£Ý)£»
ª¥
Returns:number of supplementary group IDs if OK,-1 on errorª¥
int setgroups(intª« ngroups,ª«const gid ¼£Ã£Ä££ª³£²¡½t ª«grouplistª«£Û£Ý
£©£»ª¥
int initgroups(const char *ª«username,ª«gid ¼£Ã£Ä££ª³£²¡½tª« basegid);ª«
ª¥
Á½¸öº¯Êý·µ»Ø£ºÈô³É¹¦Îª0£¬³ö´íΪ-1ª¥
Both return:0 if OK,-1 on errorª¥
×÷ΪһÖÖÌØÊâÇé¿ö£¬ÈçÈôgiclsetsizeΪ0£¬Ôòº¯ÊýÖ»·µ»ØÌí¼Ó×éIDÊý£¬¶ø¶ÔÊý×ég
rouplist
Ôò²»×÷Ð޸ġ£(Õâʹµ÷ÓÃÕß¿ÉÒÔÈ·¶¨grouplistÊý×éµÄ³¤¶È£¬ÒÔ±ã½øÐзÖÅä¡£)ª¥
setgroups¿ÉÓɳ¬¼¶Óû§µ÷ÓÃÒÔ±ãΪµ÷Óýø³ÌÉèÖÃÌí¼Ó×éID±í¡£grouplist£¬ÊÇ×éI
DÊý×飬¶ø
ngroups˵Ã÷ÁËÊý×éÖеÄÔªËØÊý¡£ª¥
ͨ³££¬Ö»ÓÐinitgroupsº¯Êýµ÷ÓÃsetgroups,initgroups¶ÁÕû¸ö×éÎļþ(Óú¯Êýgetg
rent,setg
rentºÍendgrent)£¬È»ºó¶ÔusernameÈ·¶¨Æä×éµÄ³ÉÔ±¹ØÏµ¡£È»ºó£¬Ëüµ÷ÓÃsetgroup
s,ÒÔ±ãΪ
¸ÃÓû§³õʼ»¯Ìí¼Ó×éID±í¡£ÒòΪinitgroupsµ÷ÓÃsetgroups,ËùÒÔÖ»Óг¬¼¶Óû§²ÅÄÜ
µ÷ÓÃinit
groups¡£³ýÁËÔÚ×éÎļþÖÐÕÒµ½usernameÊdzÉÔ±µÄ×飬initgroupsÒ²ÔÚÌí¼Ó×éID±íÖÐ
°üÀ¨ÁËba
segid¡£basegidÊÇusernameÔÚ¿ÚÁî×ÖÎļþÖеÄ×éID¡£ª¥
initgroupsÖ»ÓÐÉÙÊý¼¸¸ö³ÌÐòµ÷Óã¬ÀýÈçlogin(1)³ÌÐòÔÚÓû§µÇ¼ʱµ÷Óøú¯Êý¡£
ª¥
6ª±6¡þÆäËüÊý¾ÝÎļþª¥
ÖÁ´ËÎÒÃÇÌÖÂÛÁËÁ½¸öϵͳÊý¾ÝÎļþ-¿ÚÁî×ÖÎļþºÍ×éÎļþ¡£ÔÚÈÕ³£ÊÂÎñ²Ù×÷ÖУ¬Un
ixϵͳ»¹
ʹÓúܶàÆäËüÎļþ¡£ÀýÈ磬BSDÍøÂçÈí¼þÓÐÒ»¸ö¼Ç¼¸÷ÍøÂç·þÎñÆ÷ËùÌṩµÄ·þÎñµÄ
Êý¾ÝÎļþ(
/etc/services)£¬ÓÐÒ»¸ö¼Ç¼ÐÒéÐÅÏ¢ÊÇÊý¾ÝÎļþ(/etc/protocols)£¬»¹ÓÐÒ»¸öÔò
ÊǼÇÂ¼Íø
ÂçÐÅÏ¢µÄÊý¾ÝÎļþ(/etc/networks)¡£ÐÒÔ˵ÄÊÇ£¬¶ÔÓÚÕâЩÊý¾ÝÎļþµÄ½çÃæ¶¼ÓëÉÏ
Êö¶Ô¿ÚÁî
×ÖÎļþºÍ×éÎļþµÄÏàËÆ¡£ª¥
Ò»°ãÔÀíÊÇ£¬Ã¿¸öÊý¾ÝÎļþÖÁÉÙÓÐÈý¸öº¯Êý£ºª¥
1ª± getº¯Êý£»¶ÁÏÂÒ»¸ö¼Ç¼£¬Èç¹ûÐèÒª»¹´ò¿ª¸ÃÎļþ¡£´ËÖÖº¯Êýͨ³£·µ»ØÖ¸ÏòÒ»
¸ö½á¹¹µÄ
Ö¸Õë¡£µ±ÒÑ´ïµ½Îļþβ¶Ëʱ·µ»Ø¿ÕÖ¸Õë¡£´ó¶àÊýgetº¯Êý·µ»ØÖ¸ÏòÒ»¸ö¾²Ì¬´æ´¢Àà
½á¹¹µÄÖ¸
Õ룬Èç¹ûÒª±£´æÆäÄÚÈÝ£¬ÔòÐè¸´ÖÆËü¡£ª¥
2ª± setº¯Êý£º´ò¿ªÏàÓ¦Êý¾ÝÎļþ(Èç¹ûÉÐÄ©´ò¿ª)£¬È»ºó·´ÈƸÃÎļþ¡£Èç¹ûÏ£ÍûÔÚ
ÏàÓ¦Îļþ
Æðʼ´¦¿ªÊ¼´¦Àí£¬Ôòµ÷Óô˺¯Êý¡£ª¥
3ª± endº¯Êý£º¹Ø±ÕÏàÓ¦Êý¾ÝÎļþ¡£ÕýÈçǰÊö£¬ÔÚ½áÊøÁ˶ÔÏàÓ¦Êý¾ÝÎļþµÄ¶Á¡¢Ð´
²Ù×÷ºó£¬
×ÜÓ¦µ÷Óô˺¯ÊýÒԹرÕËùÓÐÏà¹ØÎļþ¡£ª¥
ÁíÍ⣬Èç¹ûÊý¾ÝÎļþÖ§³ÖijÖÖÐÎʽµÄ¹Ø¼ü×ÖËÑѰ£¬ÔòÒ²ÌṩËÑѰ¾ßÓÐÖ¸¶¨¹Ø¼ü×ÖµÄ
¼Ç¼µÄÀý
³Ì¡£ÀýÈ磬¶ÔÓÚ¿ÚÁî×ÖÎļþÌṩÁËÁ½¸ö°´¹Ø¼ü×Ö½øÐÐËÑѰµÄ³ÌÐò£ºgetpwnamѰÕÒ¾ß
ÓÐÖ¸¶¨ÓÃ
»§ÃûµÄ¼Ç¼£»getpwuidѰÕÒ¾ßÓÐÖ¸¶¨Óû§IDµÄ¼Ç¼¡£ª¥
ͼ6ª±3ÖÐÁгöÁËһЩÕâÑùµÄÀý³Ì£¬ÕâЩ¶¼ÊÇSVR4ºÍ4ª±3+BSDÖ§³ÖµÄ¡£ÔÚͼÖÐÁгöÁË
Õë¶Ô¿ÚÁî
×ÖÎļþºÍ×éÎļþµÄº¯Êý£¬ÕâЩÒÑÔÚÉÏÃæËµÃ÷¹ý¡£Í¼ÖÐÒ²ÁгöÁËһЩÓëÍøÂçÓйصĺ¯
Êý¡£¶Ôͼ
ÖÐÁгöµÄËùÓÐÊý¾ÝÎļþ¶¼ÓÐget¡¢setºÍendº¯Êý¡£ª¥
ÔÚSVR4ÖУ¬Í¼6ª±3ÖÐ×îºóËĸöÊý¾ÝÎļþ¶¼ÊÇ·ûºÅÁ¬½Ó£¬Á¬½Óµ½Ä¿Â¼/e6tc/inetϵÄ
ͬÃûÎļþ
ÉÏ¡£ª¥
SVR4ºÍ4ª±3+BSD¶¼ÓÐÀàËÆÓÚͼÖÐËùÁеĸ½¼Óº¯Êý£¬µ«ÊÇÕâЩ¸½¼Óº¯Êý¶¼´¦Àíϵͳ¹Ü
ÀíÎļþ£¬
רÓÃÓÚ¸÷¸öʵÏÖ¡£ª¥
P153ª¥ª¥ª¥
ͼ6ª±3¡þ´æÈ¡ÏµÍ³Êý¾ÝÎļþµÄһЩÀý³Ìª¥
6ª±7¡þµÇ¼»á¼Æª¥
´ó¶àÊýUnixϵͳ¶¼ÌṩÏÂÁÐÁ½¸öÊý¾ÝÎļþ£ºutmpÎļþ£¬Ëü¼Ç¼µ±Ç°µÇ¼½øÏµÍ³µÄ¸÷
¸öÓû§£»
wtmpÎļþ£¬Ëü¸ú×Ù¸÷¸öµÇ¼ºÍ×¢Ïúʼþ¡£ª¥
ÔÚVersion7ÖУ¬Ò»¸ö°üº¬ÏÂÁнṹµÄ¶þ½øÖƼǼдÈëÕâÁ½¸öÎļþÖУºª¥
struct utmp {ª¥
char ut ¼£Ã£Ä££ª³£²¡½line£Û8£Ý; /* tty ÐУº"ttyh0","ttyd0","ttyp0",¡ *
/ª¥
char ut ¼£Ã£Ä££ª³£²¡½name£Û8£Ý; /*µÇ¼Ãû */ª¥
long ut ¼£Ã£Ä££ª³£²¡½time; /*¹«ÔªÃëÊý */ª¥
};ª¥
ÔڵǼʱ£¬login³ÌÐòÌîдÕâÑùµÄÒ»¸ö½á¹¹£¬È»ºó½«ÆäдÈëµ½utmpÎļþÖУ¬Í¬Ê±Ò²
½«ÆäÌíд
µ½wtmpÎļþÖС£ÔÚ×¢Ïúʱ£¬init½ø³ÌÔÚutmpÎļþÖеÄÏàÓ¦¼Ç¼²Á³ý(ÿ¸ö×Ö½Ú¶¼Ìî
ÒÔ0)£¬²¢
½«Ò»¸öмǼÌíдµ½wtmpÎļþÖС£¶ÁwtmpÎļþÖеĸÃ×¢Ïú¼Ç¼£¬Æäut ¼£Ã£Ä££ª³£²
¡½name×Ö
¶ÎÇå³ýΪ0¡£ÔÚ
ϵͳÔÙÆô¶¯Ê±£¬ÒÔ¼°¸ü¸Äϵͳʱ¼äºÍÈÕÆÚµÄǰºó£¬¶¼ÔÚwtmpÎļþÖÐÌíÐ´ÌØÊâµÄ¼Ç¼
Ïî¡£who(
1)³ÌÐò¶ÁutmpÎļþ£¬²¢ÒԿɶÁ¸ñʽ´òÓ¡ÆäÄÚÈÝ¡£ºóÀ´µÄUnix°æ±¾Ìṩlast(1)ÃüÁî
£¬Ëü¶Áwtm
pÎļþ²¢´òÓ¡ËùÑ¡ÔñµÄ¼Ç¼¡£ª¥
´ó¶àÊýUnix°æ±¾ÈÔÌṩutmpºÍwtmpÎļþ£¬µ«ÔÚÕâЩÎļþÖеÄÐÅÏ¢Á¿È´Ôö¼ÓÁË¡£ver
sion 7ÖÐ2
0×ֽڵĽṹÔÚSVR2ÖÐÒÑÀ©³äΪ36×Ö½Ú£¬¶øÔÚSVR4ÖУ¬utmp½á¹¹ÒÑÀ©³äΪ350×Ö½Ú¡£
ª¥
SVR4ÖУ¬ÕâЩ¼Ç¼µÄÏêϸ¸ñʽÇë²Î¼ûÊÖ²áÒ³utmp(4)ºÍutmpx(4)¡£ÔÚSVR4ÖУ¬ÕâÁ½
¸öÎļþ¶¼
ÔÚĿ¼/var/admÖС£SVR4ÌṩÁ˺ܶຯÊý(¼ûgetut(3)ºÍgetutx(3))¶Á¡¢Ð´ÕâÁ½¸ö
Îļþ¡£ª¥
4ª±3+BSDÖУ¬µÇ¼¼Ç¼µÄ¸ñʽÇë²Î¼ûÊÖ²áÒ³utmp(5)¡£ÕâÁ½¸öÎļþµÄ·¾¶ÃûÊÇ/var
/run/utmp
ºÍ/var/log/wtmp¡£ª¥
6ª±8¡þϵͳ±êʶª¥
POSIXª±1¶¨ÒåÁËunameº¯Êý£¬Ëü·µ»ØÓëËÞÖ÷»úºÍ²Ù×÷ϵͳÓйصÄÐÅÏ¢¡£ª¥
#include <sys/utsnameª±h>ª¥
int uname(struct utsname *ª«nameª«;ª¥
Returns:nonnegative value if OK,-1 on error ·µ»Ø£ºÈô³É¹¦Îª·Ç¸ºÖµ£¬³ö´íΪ
-1ª¥
ͨ¹ý¸Ãº¯ÊýµÄ²ÎÊýÏòÆä´«µÝÒ»¸öutsname½á¹¹µÄµØÖ·£¬È»ºó¸Ãº¯ÊýÌîд´Ë½á¹¹¡£PO
SIXª±1Ö»
¶¨ÒåÁ˸ýṹÖÐ×îÉÙÐèÒªµÄ×Ö¶Î(ËüÃǶ¼ÊÇ×Ö·ûÊý×é)£¬¶øÃ¿¸öÊý×éµÄ³¤¶ÈÔòÓÉʵÏÖ
È·¶¨¡£Ä³
ЩʵÏÖÔڸýṹÖÐÌṩÁËÁíÍâһЩ×ֶΡ£ÔÚÀúÊ·ÉÏ£¬ÏµÍ³VΪÿ¸öÊý×é·ÖÅä9¸ö×Ö½Ú
£¬ÆäÖÐÓÐ
1¸ö×Ö½ÚÓÃÓÚ×Ö·û´®½áÊø·û(null×Ö·û)¡£ª¥
struct utsname {ª¥
char sysname£Û9£Ý; /*name of the operating system */²Ù×÷ϵͳÃûª¥
char nodename£Û9£Ý; /* name of this node */ ´Ë½ÚµãÃûª¥
char release£Û9£Ý; /*current release of operating system */²Ù×÷ϵͳµ±Ç°
·¢Ðа檥
char version£Û9£Ý; /*current version of this release */´Ë·¢ÐаæµÄµ±Ç°°æ
ª¥
char machine£Û9£Ý; /*name of hardware type */Ó²¼þÀàÐÍÃûª¥
};ª¥
ÔÚutsname½á¹¹ÖеÄÐÅϢͨ³£¿ÉÓÃuname(1)ÃüÁî´òÓ¡¡£ª¥
POSIXª±1¾¯¸æ£ºnodenameÔªËØ¿ÉÄܲ¢²»ÊÊÓÃÓÚÔÚһͨÐÅÍøÂçÉÏÒýÓÃËÞÖ÷»ú¡£´Ëº¯Êý
À´×ÔÓÚϵ
ͳV£¬ÔÚ½ÏÔçʱÆÚ£¬nodenameÔªËØÊÊÓÃÓÚÔÚUUCPÍøÂçÉÏÒýÓÃÖ÷»ú¡£ª¥
Ò²Ó¦Àí½âÔڴ˽ṹÖв¢Ã»Óиø³öÓйØPOSIXª±1°æ±¾µÄÐÅÏ¢¡£ÕâÓ¦µ±Ê¹ÓÃ2ª±5ª±2½Ú
ÖÐËù˵Ã÷
µÄ ¼£Ã£Ä££ª³£²¡½POSIX ¼£Ã£Ä££ª³£²¡½VERSIONÒÔ»ñµÃ¸ÃÐÅÏ¢¡£×îºó£¬´Ëº¯Êý¸ø³ö
ÁËÒ»ÖÖ´æ
È¡¸Ã½á¹¹ÖÐÐÅÏ¢µÄ·½·¨£¬ÖÁÓÚ
ÈçºÎ³õʼ»¯ÕâЩÐÅÏ¢£¬POSIXª±1ûÓÐ×÷ÈκÎ˵Ã÷¡£´ó¶àÊýϵͳV°æ±¾ÔÚ¹¹ÔìϵͳºË
ʱͨ¹ý±à
Ò뽫ÕâЩÐÅÏ¢´æ·ÅÔÚϵͳºËÖС£ª¥
±´¿ËÀ³ÀàµÄ°æ±¾Ìṩgethostnameº¯Êý£¬ËüÖ»·µ»ØËÞÖ÷»úÃû¡£Õâͨ³£¾ÍÊÇÔÚTCP/IP
ÍøÉϸÃËÞ
Ö÷»úµÄÃû×Ö¡£ª¤ª¥
#include <unistdª±h>ª¥
int gethostname(char *ª«name,ª«int ª«namelen);ª«ª¥
Returns:0 if OK,-1 on error·µ»Ø£ºÈô³É¹¦Îª0£¬³ö´íΪ-1ª¥
ͨ¹ýname·µ»ØµÄ×Ö·û´®ÒÔnull·û½áβ(³ý·ÇûÓÐÌṩ×ã¹»µÄ¿Õ¼ä)¡£<sys/paramª±h
£¾Öеij£Êý
MAXHOSTNAMELEN¹æ¶¨ÁË´ËÃû×ÖµÄ×î´ó³¤¶È(ͨ³£ÊÇ64×Ö½Ú)¡£Èç¹û¸ÃËÞÖ÷»úÁªµ½TCP
/IPÍø£¬Ôò
´ËËÞÖ÷»úÃûͨ³£ÊǸÃËÞÖ÷»úµÄÍêÕûµÄÓòÃû¡£ª¥
hostname(1)ÃüÁî¿ÉÓÃÀ´´æÈ¡ºÍÉèÖÃËÞÖ÷»úÃû¡£(³¬¼¶Óû§ÓÃÒ»¸öÀàËÆµÄº¯Êýsetho
stnameÀ´
ÉèÖÃËÞÖ÷»úÃû¡£)ËÞÖ÷»úÃûͨ³£ÔÚϵͳ×Ô¾ÙʱÉèÖã¬ËüÓÉ/etc/rcÈ¡×ÔÒ»¸öÆô¶¯Îļþ
¡£ª¥
ËäÈ»´Ëº¯ÊýÊDZ´¿ËÀ³ËùÌØÓе쬵«ÊÇ£¬SVR4×÷ΪBSD¼æÈÝÐÔÈí¼þ°üµÄÒ»²¿·ÖÌṩge
tbostname
ºÍsetbostnameº¯Êý£¬ÒÔ¼°hostnameÃüÁî¡£SVR4Ò²½«MAXHOSTNAMELENÀ©³äΪ256×Ö½Ú
¡£ª¥
6ª±9¡þʱ¼äºÍÈÕÆÚÀý³Ìª¥
ÓÉUnixϵͳºËÌṩµÄ»ù±¾Ê±¼ä·þÎñÊǹú¼Ê±ê׼ʱ¹«Ôª1970ª±1ª±1 00£º00£º00ÒÔÀ´
¾¹ýµÄÃë
Êý¡£ÔÚ1ª±10½ÚÖÐÔøÌá¼°ÕâÖÖÃëÊýÊÇÒÔÊý¾ÝÀàÐÍtime-t±íʾµÄ¡£ÎÒÃdzÆËüÃÇΪÈÕÀú
ʱ¼ä¡£ÈÕ
Àúʱ¼ä°üÀ¨Ê±¼äºÍÈÕÆÚ¡£UnixÔÚÕâ·½ÃæÓëÆäËü²Ù×÷ϵͳµÄÇø±ðÊÇ(a)ÒÔ¹ú¼Ê±ê׼ʱ
¶ø·Ç±¾µØ
ʱ¼ä¼ÆÊ±£¬(b)¿É×Ô¶¯½øÐÐת»»£¬ÀýÈç±ä»»µ½ÏÄÈÕÖÆ£¬(c)½«Ê±¼äºÍÈÕÆÚ×÷Ϊһ¸öÁ¿
Öµ±£´æ¡£
timeº¯Êý·µ»Øµ±Ç°Ê±¼äºÍÈÕÆÚ¡£ª¥
#include <timeª±h>ª¥
time ¼£Ã£Ä££ª³£²¡½t time(time ¼£Ã£Ä££ª³£²¡½t *ª«calptr);ª«ª¥
Returns:value of time if OK,-1 on error ·µ»Ø£ºÈô³É¹¦ÎªÊ±¼äÖµ£¬³ö´íΪ-1ª¥
ʱ¼äÖµ×÷Ϊº¯ÊýÖµ·µ»Ø¡£Èç¹û²ÎÊýÊÇ·Çnull£¬Ôòʱ¼äÖµÒ²´æ·ÅÔÚÓÉcalptrÖ¸ÏòµÄµ¥
ÔªÄÚ¡£ª¥
Ôںܶ౴¿ËÀ³ÀàµÄϵͳÖУ¬time(3)Ö»ÊÇÒ»¸öº¯Êý£¬Ëüµ÷ÓÃgettime of day(2)ϵͳ
µ÷Óᣪ¥
ÔÚSVR4Öе÷ÓÃstime(2)º¯Êý£¬ÔÚ±´¿ËÀ³ÀàµÄϵͳÖе÷ÓÃsettime of day(2)¶Ôϵͳ
ºËÖеĵ±
ǰʱ¼äÉèÖóõʼֵ¡£ª¥
ÓëtimeºÍstimeº¯ÊýÏà±È£¬BSDµÄgettime of dayºÍsettime of dayÌṩÁ˸ü¸ßµÄ·Ö
±æÂÊ(΢
Ãë¼¶)¡£Õâ¶ÔijЩӦÓÃÊǺÜÖØÒªµÄ¡£ª¥
Ò»µ©È¡µÃÕâÖÖÒÔÃë¼ÆµÄºÜ´óµÄʱ¼äÖµºó£¬Í¨³£Òªµ÷ÓÃÁíÒ»¸öʱ¼äº¯Êý½«Æä±ä»»ÎªÈË
ÃǿɶÁµÄ
ʱ¼äºÍÈÕÆÚ¡£Í¼6ª±4˵Ã÷Á˸÷ÖÖʱ¼äº¯ÊýÖ®¼äµÄ¹ØÏµ¡£(ͼÖÐÒÔÐéÏß±íʾµÄËĸöº¯
Êýlocalti
me¡¢mktime¡¢ctimeºÍstrftime¶¼Êܵ½»·¾³±äÁ¿TZµÄÓ°Ïì¡£ÎÒÃǽ«ÔÚ±¾½ÚµÄ×îºó²¿
·Ö¶ÔÆä½ø
ÐÐ˵Ã÷¡£)ª¥
P156ª¥ª¥ª¥
ͼ6ª±4¡þ¸÷¸öʱ¼äº¯ÊýÖ®¼äµÄ¹ØÏµª¥
Á½¸öº¯ÊýlocaltimeºÍgmtime½«ÈÕÀúʱ¼ä±ä»»³ÉÒÔÄê¡¢Ô¡¢ÈÕ¡¢Ê±¡¢·Ö¡¢Ãë¡¢ÖÜÈÕ
±íʾµÄʱ
¼ä£¬½«ÕâЩ´æ·ÅÔÚÒ»¸ötm½á¹¹ÖС£ª¥
struct tm { /* a broken-down time */ ÒÔÄê¡¢Ô¡¢ÈÕ¡¢Ê±¡¢·Ö¡¢Ãë±íʾµÄʱ¼ä
ª¥
int tm ¼£Ã£Ä££ª³£²¡½sec; /* seconds after the minute:£Û0,61£Ý */Ãë£Û£°
£¬£¶£±£Ý
ª¥int tm ¼£Ã£Ä££ª³£²¡½min; /* minutes after the hour:£Û0,59£Ý */·Ö£Û£°
£¬£µ£¹£Ý
ª¥int tm ¼£Ã£Ä££ª³£²¡½hour; /* hours after midnight:£Û0,23£Ý */ʱ£Û£°£¬
£²£³£Ýª¥
int tm ¼£Ã£Ä££ª³£²¡½mday; /* day of the month:£Û1,31£Ý */ÈÕ£Û£±£¬£³£±£Ý
ª¥
int tm ¼£Ã£Ä££ª³£²¡½mon; /* month of the year:£Û0,11£Ý */Ô£ۣ°£¬£±£±£Ý
ª¥
int tm ¼£Ã£Ä££ª³£²¡½year; /* years since 1900 */ 1900ºóµÄÄꪥ
int tm ¼£Ã£Ä££ª³£²¡½wday; /* days since Sunday:£Û0,6£Ý */¢ÙÐÇÆÚ¼¸£Û£°£¬
£¶£Ýª¥
int tm ¼£Ã£Ä££ª³£²¡½yday; /* days since January 1:£Û0,365£Ý */¢Ú×Ô1ÔÂ1ÈÕ
¾¹ýµÄÌì
Êý£Û£°£¬£³£¶£µ£Ýª¥
int tm ¼£Ã£Ä££ª³£²¡½isdst; /* daylight saving time flag:<0,0,>0 */¢ÛÏÄÈÕ
ÖÆÊ±¼ä±ê
Ö¾£º<0,0,>0ª¥
};ª¥
Ãë¿ÉÒÔ³¬¹ý59µÄÀíÓÉÊÇ¿ÉÒÔ±íʾÈóÃë¡£×¢Ò⣬³ýÁËÔÂÈÕ×ֶΣ¬ÆäËü×ֶεÄÖµ¶¼ÒÔ0
¿ªÊ¼¡£Èç
¹ûÏÄÈÕÖÆÉúЧ£¬ÔòÏÄÈÕÖÆ±ê־ֵΪÕý£¬Èç¹ûÒÑ·ÇÏÄÈÕÖÆÊ±¼äÔòΪÁ㣬Èç¹û´ËÐÅÏ¢²»
¿ÉÓã¬Ôò
Ϊ¸º¡£ª¥
#include <timeª±h>ª¥
struct tm *gmtime(const time ¼£Ã£Ä££ª³£²¡½¡t¡ª«*calptr);ª«ª¥
struct tm *localtime(const time ¼£Ã£Ä££ª³£²¡½t ª«*calptr);ª«ª¥
Both return:pointer to broken-down timeª¥
Á½¸öº¯Êý·µ»Ø£ºÖ¸Ïòtm½á¹¹µÄÖ¸Õ몥
localtimeºÍgmtimeÖ®¼äµÄÇø±ðÊÇ:localtime½«ÈÕÀúʱ¼ä±ä»»³É±¾µØÊ±¼ä(¿¼Âǵ½±¾
µØÊ±ÇøºÍ
ÏÄÈÕÖÆ±êÖ¾)£¬¶øgmtimeÔò½«ÈÕÀúʱ¼ä±ä»»³É¹ú¼Ê±ê׼ʱµÄÄê¡¢Ô¡¢ÈÕ¡¢Ê±¡¢·Ö¡¢
Ãë¡¢ÖÜÈÕ
¡£ª¥
º¯ÊýmktimeÒÔ±¾µØÊ±¼äµÄÄê¡¢Ô¡¢ÈÕµÈ×÷Ϊ²ÎÊý£¬½«Æä±ä»»³Étime-tÖµ¡£ª¥
#include <timeª±h>ª¥
time ¼£Ã£Ä££ª³£²¡½t mktime(struct tm *ª«tmptr);ª« ·µ»Ø£ºÈô³É¹¦ÎªÈÕÀúʱ¼ä
£¬³ö´íΪ
-1ª¥
asctimeºÍctimeº¯Êý²úÉúÏÂÁÐÐÎʽµÄ26×Ö½Ú×Ö·û´®£¬ÕâÓëdate(1)ÃüÁîµÄϵͳĬÈÏ
Êä³öÐÎʽ
ÀàËÆ£ºª¤ª¥
Tue Jan 14 17:49:03 1992£Ün£Ü0ª¥
#include <timeª±h>ª¥
char *asctime(const struct tm¡¡*ª«tmptr);ª«ª¥
char *ctime(const time ¼£Ã£Ä££ª³£²¡½t *ª«calptr);ª«ª¥
Á½¸öº¯Êý·µ»Ø£ºÖ¸Ïònull½áβµÄ×Ö·û´®ª¥
asctimeµÄ²ÎÊýÊÇÖ¸ÏòÄê¡¢Ô¡¢ÈÕµÈ×Ö·û´®µÄÖ¸Õ룬¶øctimeµÄ²ÎÊýÔòÊÇÖ¸ÏòÈÕÀúʱ
¼äµÄÖ¸Õë
¡£ª¥
×îºóÒ»¸öʱ¼äº¯ÊýÊÇstrftime£¬ËüÊǷdz£¸´ÔÓµÄprintfÀàµÄʱ¼äÖµº¯Êý¡£ª¥
#include <timeª±h>ª¥
size ¼£Ã£Ä££ª³£²¡½t strftime(char *ª«buf,ª«size ¼£Ã£Ä££ª³£²¡½t maxsize,
const cha
r *ª«format,ª«ª¥
const struct tm *ª«tmptr);ª« ·µ»Ø£ºÈôÓпռäΪ´æÈëÊý×éµÄ×Ö·ûÊý£¬·ñÔòΪ0ª¥
×îºóÒ»¸ö²ÎÊýÊÇÒª¸ñʽ»¯µÄʱ¼äÖµ£¬ËµÃ÷ΪָÏòÒ»¸öÄê¡¢Ô¡¢ÈÕ¡¢Ê±¡¢·Ö¡¢Ãë¡¢ÖÜ
ÈÕʱ¼äÖµ
µÄÖ¸Õë¡£¸ñʽ»¯½á¹û´æ·ÅÔÚÒ»¸ö³¤¶ÈΪmaxsize¸ö×Ö·ûµÄbufÊý×éÖУ¬Èç¹ûbuf³¤¶È
ÊÇÒÔ´æ·Å
¸ñʽ»¯½á¹û¼°Ò»¸önullÂçÖ¹·û£¬Ôò¸Ãº¯Êý·µ»ØÔÚbufÖдæ·ÅµÄ×Ö·ûÊý(²»°üÀ¨nullÖÕ
Ö¹·û)¡£
·ñÔò¸Ãº¯Êý·µ»Ø0¡£ª¥
format²ÎÊý¿ØÖÆÊ±¼äÖµµÄ¸ñʽ¡£Èçͬprintfº¯ÊýÒ»Ñù£¬±ä»»ËµÃ÷µÄÐÎʽÊǰٷֺÅÖ®
ºó¸úÒ»¸ö
ÌØ¶¨×Ö·û¡£ÔÚformatÖÐµÄÆäËü×Ö·ûÔò°´ÔÔñÊä³ö¡£Á½¸öÁ¬ÐøµÄ°Ù·ÖºÅÔÚÊä³öÖвúÉú
Ò»¸ö°Ù·Ö
ºÅ¡£Óëprintfº¯ÊýµÄ²»Í¬Ö®´¦ÊÇ£¬Ã¿¸ö±ä»»ËµÃ÷²úÉúÒ»¸ö¶¨³¤Êä³ö×Ö·û´®£¬ÔÚfor
mat×Ö·û´®
ÖÐûÓÐ×ֶοí¶ÈÐÞÊηû¡£Í¼6ª±5ÖÐÁгöÁË21ÖÖANSIC¹æ¶¨µÄ±ä»»ËµÃ÷¡£ª¥
P158ª¥ª¥ª¥
ͼ6ª±5¡þstrftimeª¥
ͼÖеÚÈýÁеÄÊý¾ÝÀ´×ÔÓÚÔÚSVR4ÉÏ£¬¶ÔÓ¦ÓÚÏÂÁÐʱ¼äºÍÈÕÆÚ£¬Ö´ÐÐstrftimeº¯ÊýËù
µÃµÄ½á¹û
¡£ª¥
Tue¡þJan¡þ14¡þ19£º40¡þMST¡þ1992ª¥
ͼ6ª±5ÖеĴó¶àÊý¸ñʽ˵Ã÷µÄÒâÒåÊǺÜÃ÷ÏԵġ£ÐèÒªÂÔ×÷½âÊ͵ÄÊÇ%UºÍ%W¡£%UÊÇÏà
Ó¦ÈÕÆÚÔÚ
¸ÃÄêÖÐËùÊôÒòÊý£¬°üº¬¸ÃÄêÖеÚÒ»¸öÐÇÆÚÈÕµÄÖÜÊǵÚÒ»ÖÜ¡£%WÒ²ÊÇÏàÓ¦ÈÕÆÚÔÚ¸ÃÄê
ÖÐËùÊôµÄ
ÖÜÊý£¬²»Í¬µÄÊǰüº¬µÚÒ»¸öÐÇÆÚÒ»µÄÖÜΪµÚÒ»ÖÜ¡£ª¥
SVR4ºÍ4ª±3+BSD¶¼¶ÔstrftimeµÄ¸ñʽ×Ö·û´®ÌṩÁíһЩÀ©³äÖ§³Ö¡£ª¥
ÎÒÃÇÔøÔÚÇ°ÃæÌá¼°£¬Í¼6ª±4ÖÐÒÔÐéÏß±íʾµÄËĸöº¯ÊýÊܵ½»·¾³±äÁ¿TZµÄÓ°Ïì¡£ÕâËÄ
¸öº¯ÊýÊÇ
£ºlocaltime,mktime,ctimeºÍstrftime¡£Èç¹û¶¨ÒåÁËTZ£¬ÔòÕâЩº¯Êý½«Ê¹ÓÃÆäÖµÒÔ
´úÌæÏµÍ³
ĬÈÏÊ±Çø¡£Èç¹ûTZ¶¨ÒåΪ¿Õ´®(Ò༴TZ=)£¬ÔòʹÓùú¼Ê±ê׼ʱ¡£TZµÄÖµ³£³£ÀàËÆÓÚ
TZ=EST5ED
T£¬µ«ÊÇPOSIXª±1ÔÊÐí¸üÏêϸµÄ˵Ã÷¡£ÓйØTZµÄÏêϸÇé¿öÇë²ÎÔÄPOSIXª±1±ê×¼£ÛIE
EE 1990£Ý
µÄ8ª±1ª±1½Ú£¬SVR4 environ(5)ÊÖ²áÒ³£ÛA T&T 1990e£Ý£¬»ò4ª±3+BSD ctime(3)ÊÖ
²áÒ³¡£ª¥
±¾½ÚËùÊöµÄËùÓÐʱ¼äºÍÈÕÆÚº¯Êý¶¼ÊÇÓÉANSIC±ê×¼¶¨ÒåµÄ¡£ÔÚ´Ë»ù´¡ÉÏ£¬POSIXª±1
Ö»Ôö¼ÓÁË
»·¾³±äÁ¿TZ¡£ª¥
ͼ6ª±4ÖÐÆß¸öº¯ÊýÖеÄÎå¸ö¿ÉÒÔ»ØËݵ½Version7(»ò¸üÔç)£¬ËüÃÇÊÇ£ºtime¡¢local
time¡¢gmt
ime¡¢asctimeºÍctime¡£ÔÚUnixʱ¼ä¹¦ÄÜ·½Ãæ½üÆÚËù×÷µÄÔö¼Ó´ó¶àÊÇ´¦Àí·ÇUSÊ±Çø
ÒÔ¼°ÏÄÈÕ
ÖÆµÄ¸ü¸Ä¹æÔò¡£ª¥
6ª±10¡þÕªÒªª¥
ÔÚËùÓÐUnixϵͳÉ϶¼Ê¹ÓÿÚÁî×ÖÎļþºÍ×éÎļþ¡£ÎÒÃÇ˵Ã÷Á˸÷ÖÖ¶ÁÕâЩÎļþµÄº¯Êý
¡£ÎÒÃÇÒ²
½éÉÜÁËÒõÓ°¿ÚÁî×Ö£¬Ëü¿ÉÒÔÔö¼ÓϵͳµÄ°²È«ÐÔ¡£Ìí¼Ó×éIDÕýÔڵõ½¸ü¶àÓ¦Óã¬ËüÌá
¹©ÁËÒ»¸ö
Óû§Í¬Ê±¿ÉÒԲΰì¶à¸ö×éµÄ·½·¨¡£ÎÒÃÇÒ²½éÉÜÁË´ó¶àÊýϵͳËùÌṩµÄ´æÈ¡ÆäËüÓëϵ
ͳÓйصÄ
Êý¾ÝÎļþµÄÀàËÆµÄº¯Êý¡£×îºó£¬ÎÒÃÇ˵Ã÷ÁËANSICºÍPOSIXª±1ÌṩµÄÓëʱ¼äºÍÈÕÆÚ
ÓйصÄһЩº¯Êý¡£¡¼£Ì£Í¡½
--
--
¡ù À´Ô´:¡¤BBS ˮľÇ廪վ smth.org¡¤[FROM: 202.38.248.38]
BBSˮľÇ廪վ¡Ã¾«»ªÇø