ºìÁªLinuxÃÅ»§
Linux°ïÖú

Linux IPCС½á

·¢²¼Ê±¼ä:2006-03-22 00:18:04À´Ô´:ºìÁª×÷Õß:ABC
ÏÖÔÚ×î³£ÓõĽø³Ì¼äͨÐŵķ½Ê½ÓУºÐźţ¬ÐźÅÁ¿£¬ÏûÏ¢¶ÓÁУ¬¹²ÏíÄÚ´æ¡£
Ëùν½ø³ÌͨÐÅ£¬¾ÍÊDz»Í¬½ø³ÌÖ®¼ä½øÐÐһЩ"½Ó´¥"£¬ÕâÖÖ½Ó´¥Óмòµ¥£¬Ò²Óи´ÔÓ¡£»úÖƲ»
ͬ£¬¸´ÔÓ¶ÈÒ²²»Ò»Ñù¡£Í¨ÐÅÊÇÒ»¸ö¹ãÒåÉϵÄÒâÒ壬²»½ö½öÖ¸´«µÝһЩmassege¡£
ËûÃǵÄʹÓ÷½·¨ÊÇ»ù±¾ÏàͬµÄ£¬ËùÒÔÖ»ÒªÕÆÎÕÁËÒ»ÖÖµÄʹÓ÷½·¨£¬È»ºó¼ÇסÆäËûµÄʹÓ÷½
·¨¾Í¿ÉÒÔÁË¡£

1£® ÐźÅ
ÔÚÎÒѧϰµÄÄÚÈÝÖУ¬Ö÷Òª½Ó´¥ÁËÐźÅÀ´ÊµÏÖͬ²½µÄ»úÖÆ£¬¾Ý˵ÐźÅÒ²¿ÉÒÔÓÃÀ´×öÆäËüµÄÊÂ
Ç飬µ«ÊÇÎÒ»¹²»ÖªµÀ×öʲô¡£
ÐźźÍÐźÅÁ¿ÊDz»Í¬µÄ£¬ËûÃÇËäÈ»¶¼¿ÉÓÃÀ´ÊµÏÖͬ²½ºÍ»¥³â£¬µ«Ç°ÕßÊÇʹÓÃÐźŴ¦ÀíÆ÷À´
½øÐеģ¬ºóÕßÊÇʹÓÃP,V²Ù×÷À´ÊµÏֵġ£
ʹÓÃÐźÅÒªÏÈÖªµÀÓÐÄÄЩÐźţ¬ÔÚLinuxÏÂÓÐ31¸öÐèÒª¼ÇסµÄͨÓÃÐźţ¬¾Ý˵ҲÊÇsystem
VÖÐ×î³£ÓõÄÄÇЩ¡£ÕâÀïÂÔ¡£
1£® 1ÐźÅÏà¹Øº¯Êý£º
#include
int sigaction(int signo, const struct sigaction *act, struct sigaction
*oact);
¸Ãº¯ÊýÓÃÀ´Îª½ø³Ì°²×°ÐźŴ¦ÀíÆ÷£¬struct sigactionÊý¾ÝÊÇÓÃÀ´±£´æÐźŴ¦ÀíÆ÷µÄÏà
¹ØÐÅÏ¢¡£

#include
int sigemptyset(sigset_t *set);
½«Ðźż¯ºÏÇå¿Õ¡£
int sigfillset(sigset_t *set);
½«Ðźż¯ºÏÉèÖóɰüº¬ËùÓеÄÐźš£ÔÚ¶ÔÐźŽøÐвÙ×÷ÒÔÇ°Ò»¶¨Òª¶ÔÐźż¯½øÐгõʼ»¯¡£

int sigaddset(sigset_t *set, int signo);
ÏòÐźż¯ÖмÓÈësigno¶ÔÓ¦µÄÐÂÐźš£
int sigdelset(sigset_t *set, int signo);
´ÓÐźż¯ÖÐɾ³ýsigno¶ÔÓ¦µÄÒ»¸öÐźš£
int sigismember(const sigset_t *set, int signo);
ÅжÏij¸öÐźÅÊÇ·ñÔÚÐźż¯ÖС£·µ»Ø1ÔòÔÚ£¬0Ôò²»ÔÚ¡£

#include
int sigprocmask(int how,const sigset_t *set, sigset_t *oset);
ÓÃÀ´ÉèÖýø³ÌµÄÐźÅÆÁ±ÎÂë¡£ÐźÅÆÁ±ÎÂë¿ÉÒÔÓÃÀ´ÔÚij¶Îʱ¼äÄÚ×èÈûһЩÐźż¯ÖеÄÐÅ
ºÅ£¬Èç¹ûÐźŲ»ÔÚÐźż¯ÖУ¬¾Í²»±ØÌÖÂÛËü£¬ÒòΪ¿Ï¶¨²»ÏìÓ¦£¬ÊÇ·ñÄÜÉú³ÉÒ²²»¿Ï¶¨£¬ÎÒ
ûÓÐ×ö¹ýÊÔÑé¡£

1£®2ÎÒËùÀí½âµÄʹÓÃÐźŻúÖƵķ½·¨£º
ʹÓÃÐźţ¬Ö÷Òª×öµÄÊÂÇé¾ÍÊÇÐźŴ¦ÀíÆ÷µÄ¹¤×÷£¬ÕâÀïÃæÊÇÄãÏë×öµÄÊÂÇé¡£¾ÍÏñÖжϴ¦Àí
º¯ÊýÒ»Ñù¡£
ÔÚʹÓÃÐźÅÒÔÇ°£¬Ê×ÏÈÒª³õʼ»¯Ðźż¯£¬Ö»ÓÐÔÚÐźż¯ÀïÃæµÄÐźŲŻᱻ¿¼ÂÇ¡£
ÓÐÁ½ÖÖ·½·¨¿ÉÒÔ³õʼ»¯Ðźż¯£¬Ò»ÖÖÊÇÉèÖÿÕÐźż¯£¬Ò»ÖÖÊǽ«ËùÓеÄÐźŶ¼¼Óµ½Ðźż¯
ÖС£Èç¹ûÄã×Ô¼ºÏëÒªµÄÐźż¯²»ÊÇÕâÁ½ÖÖ£¬¿ÉÒÔÔÚ³õʼ»¯ÁËÒÔºóͨ¹ýÌí¼ÓºÍɾ³ýÐźŽøÐÐ
¶¨ÖÆ¡£
Èç¹ûÔÚ½ø³ÌÖ´ÐеÄÒ»¶Îʱ¼äÄÚ²»Ïë¶ÔijЩÐźŽøÐÐÏìÓ¦£¬Ôò¿ÉÒÔʹÓÃsigprocmask¶Ôµ±Ç°
µÄÐźż¯ÖеÄһЩÐźŽøÐÐ×èÈû£¬ÉÔºóÔÙÖ´ÐС£
µ±Ä㽫Ðźż¯ÉèÖÃÍê±Ïºó£¬ÔÚÈÃËû¹¤×÷֮ǰÐèÒª°²×°ÐźŴ¦ÀíÆ÷¡£°²×°ÐźŴ¦ÀíÆ÷¿ÉÒÔʵ
ÏÖÕ⼸¸ö¹¦ÄÜ£º
Ö¸¶¨ÐźŴ¦Àíº¯ÊýµÄÈë¿Ú£»Ö¸¶¨ÐźÅÆÁ±Î¼¯ºÏ£»Ö¸¶¨ÐźŴ¦ÀíÆ÷µÄһЩ±êÖ¾¡£ËùνÐźŴ¦
ÀíÆ÷£¬¾ÍÊÇÖ¸¶¨ÁËһЩ´¦Àí·½·¨£¬¹Ø¼üÔÚÓÚ°²×°ÐźŴ¦ÀíÆ÷£¬ÕâÊÇʹÕýÈ·µÄÐźŽøÐÐÕýÈ·
µÄ´¦Àí¹Ø¼ü¡£ÔÚ°²×°µÄʱºò£¬Ò»¶¨Òª¶ÔÌض¨µÄÐźŸ³ÓèÕýÈ·µÄÐźŴ¦Àíº¯Êý¡£
ÎÒ²»ÖªµÀ²»Í¬½ø³ÌÖ®¼äµÄÐźŴ¦ÀíÆ÷ÄÜ·ñ»ìÓ㬵«ÊÇÏñÒ»¸öÌض¨µÄ½ø³ÌÖÐÓжàÉÙ¸öÐźŴ¦
ÀíÆ÷ÕâÑùµÄÎÊÌâÊDz»ÄÜÌáµÄ¡£ÒòΪÐźŴ¦ÀíÆ÷ÊÇÒ»¸ö¸ÅÄËûÕë¶ÔµÄÊÇÐźţ¬¾ÍÊÇ˵Èç¹û
ÄãÖ¸¶¨ÁËÒ»¸öÊý¾Ý½á¹¹£¬ÓÃËüÀ´´æ´¢Õë¶Ôij¸öÐźŵĴ¦ÀíÐÅÏ¢£¬ÄÇô°²×°ÐźŴ¦ÀíÆ÷¾ÍÊÇ
¸³ÓèÕâ¸öÊý¾Ý½á¹¹Ò»Ð©Ïà¹ØÐÅÏ¢£¬Ê¹ÓÃÐźŴ¦ÀíÆ÷¾ÍÊÇÓÃÕâ¸öÊý¾Ý½á¹¹´æ´¢µÄÐÅÏ¢À´×éÖ¯
Ò»ÖÖ»úÖƵ±·¢ÉúÕâ¸öÐźŵÄʱºò»á×öһЩÄãʵÏÖÉèÖúõĴ¦Àí¡£µ«ÊÇÈç¹ûÇø·Ö²»Í¬½ø³ÌÖÐ
¶Ôͬһ¸öÐźŵIJ»Í¬´¦ÀíÆ÷£¿ÎÒÏë´¦ÀíÆ÷¿ÉÄÜÖ»¶ÔºËËüËùÊôµÄ½ø³ÌÓйصÄÐźŽøÐÐÏìÓ¦£¬
µ«ÊÇÈç¹ûÊÇÕâÑùµÄ»°£¬ÄÇÕâÊÇÔõôʵÏÖµÄÄØ£¿
²»¹ýÓÐÒ»µãÊÇ¿ÉÒÔÖªµÀµÄ£¬ÄǾÍÊÇÿһ¸öÐźŶ¼ÓÐÒ»¸öÐźŴ¦ÀíÆ÷£¨È·¶¨µÄ£©£¬¿ÉÒÔ¶¯¹ý
°²×°ÐźŴ¦ÀíÆ÷À´Ö¸¶¨ËýµÄÐÐΪ¡£ÐźŴ¦ÀíÆ÷ÓÉËû×Ô¼ºµÄÐÅÏ¢´æ´¢ÇøÓò£¨ÎÒ²»ÖªµÀÔÚʲô
µØ·½£©£¬µ«ÊÇ¿ÉÒÔͨ¹ýÏòsigactionÀàÐ͵ÄÊý¾Ý½á¹¹ÏòÐźŴ¦ÀíÆ÷µÄÐÅÏ¢´æ´¢ÇøÓòÖд«µÝ
ÐÅÏ¢¡£Õâ¸öÊý¾Ý½á¹¹ÓÉÒ»¸ö¾Í¿ÉÒÔÁË£¬ÒòΪËüÖ»ÊÇÁÙʱ´«µÝÊý¾ÝµÄÔØÌå¡£
µ«ÊÇsigpromaskºÍÐźŴ¦ÀíÆ÷ÀïÃæµÄsigmaskÊDz»Ò»ÑùµÄ£¬Ç°ÕßÊÇÔÚ½ø³Ìµ±Ç°Á÷³ÌÉèÖÃÐÅ
ºÅÆÁ±Î£¬ºóÕßÊÇÖ¸¶¨ÔÚÐźŴ¦ÀíÆ÷×÷ÓÃʱÐèÒªÆÁ±ÎµôµÄÐźš£ÀýÈ磬ÔÚÉèÖÃij¸öÌض¨ÐźÅ
µÄÐźŴ¦ÀíÆ÷ʱ£¬ÎÒÃǵ±È»²»ÄÜÈÃËüµÄÐźŴ¦ÀíÆ÷¹¤×÷ÁË£¬ÒòΪ»¹Ã»ÓÐÉèÖÃÍêÂð£¬ÕâÊÇÎÒ
ÃÇ¿ÉÒÔʹÓÃsigprocmaskÀ´Èõ±Ç°µÄÁ÷³Ì¿ªÊ¼×èÈû¸ÃÐźţ¬µ±ÉèÖÃÍêÐźŴ¦ÀíÆ÷ÒÔºó£¬ÔÙ
ÓÃsigprocmask»Ö¸´±»×èÈûµÄÐźš£¶øÒÔºóÔÙ½ÓÊÕµ½¸ÃÐźÅʱ£¬ÐźŴ¦ÀíÆ÷¾Í¿ÉÒÔ¹¤×÷ÁË¡£
ÎÒµÄÏë·¨ÊÇ£¬Í¬Ò»¸öÐźÅÔÚ²»Í¬µÄ½ø³ÌÀï¿ÉÒÔÓв»Í¬µÄÐźŴ¦ÀíÆ÷£¨Ò»°ãÓ¦¸ÃÓÐÒ»¸öȱʡ
´¦Àí£©£¬µ±ÏµÍ³Öз¢ÉúÒ»¸öÐźÅʱ£¬ËùÓÐÄܽÓÊܵ½µÄ½ø³Ì¶¼¿ÉÒÔ½ÓÊÕµ½Õâ¸öÐźţ¬²¢ÓÃËû
ÃÇ×Ô¼ºµÄÐźŴ¦ÀíÆ÷¶ÔÕâ¸öÐźÅ×ö³ö¸÷×ÔµÄÏìÓ¦¡£

1£®3ÈçºÎÓÃÐźÅÀ´½øÐнø³Ì¼äµÄͬ²½
ͬ²½µÄʵÏÖÖ÷ÒªÊÇͨ¹ýÔÚ½ÓÊÜÐźÅ֮ǰ¹ÒÆð½ø³Ì£¬µÈ´ýÏà¹ØÐźš£ËùÒÔÉæ¼°µ½Òì²½ÐźŰ²
È«º¯ÊýµÄ¸ÅÄî¡£

²»¹ýÐźÅÈçºÎÀ´ÊµÏÖ½ø³Ì¼äµÄ»¥³â£¬ÎÒÀí½â²»ÊǺܶ࣬ÎÒÏëÐźŵÄÖ÷ÒªÓô¦»¹ÊÇÔÚÈíÖжÏ
´¦ÀíºÍ½ø³Ìͬ²½¡£


2£®ÐźÅÁ¿
ÐźÅÁ¿ºÍÐźÅÊDz»Í¬µÄ¶«Î÷£¬×ÐϸÏëÏë¾Í¿ÉÒÔÀí½â£ºÐźÅÊÇʵÏÖÔ¼¶¨µÄ¹Ì¶¨µÄÖµ£¬¶øÐźÅ
Á¿ÊÇÒ»¸ö±äÁ¿¼Ç¼×ÅijЩÌض¨ÐÅÏ¢¡£
ÐźÅÁ¿ÕâÖÖ¶«Î÷ÎÒÃÇÔÚ²Ù×÷ϵͳ¿Î³ÌÖоÍÒѾ­½Ó´¥¹ýÁË£¬ÕâÀïÖ»ÊÇÔٲݲÝ˵¼¸¾ä¡£ÐźÅÁ¿
·ÖΪÓÐÃûºÍÎÞÃûÁ½ÖÖ¡£½ø³Ì¼äͨÐÅÓÃÓÐÃûÐźÅÁ¿£¬Í¬Ò»½ø³ÌÄÚ²¿Í¨ÐÅÒ»°ãÓÃÎÞÃûÐźÅÁ¿¡£
Õâ¸öÎÒ²»ÔÙ¶à˵¡£
2£®1ÐźÅÁ¿Ïà¹Øº¯Êý
#include
#include
#include
int semget(key_t key, int nsems, int semflg);
´´½¨Ò»¸öеÄÐźÅÁ¿×é»ò»ñÈ¡Ò»¸öÒѾ­´æÔÚµÄÐźÅÁ¿×é¡£

#include
#include
#include
int semop(int semid, struct sembuf *sop, int nsops);
semopº¯Êý¿ÉÒÔÒ»´Î¶ÔÒ»¸ö»ò¶à¸öÐźÅÁ¿½øÐвÙ×÷¡£
Int semctl(int sem_id, int semnum, int cmd,/*union semun arg*/¡­);
¸Ãº¯Êý¿ÉÒÔÓÃÀ´»ñȡһЩÐźÅÁ¿µÄʹÓÃÐÅÏ¢»òÕßÊÇÀ´¶ÔÐźÅÁ¿½øÐпØÖÆ¡£

2£®2ÎÒ¶ÔÐźÅÁ¿»úÖƵÄÀí½â
¶ÔÐźÅÁ¿µÄ²Ù×÷Ö»ÓÐÁ½¸ö£ºP, V¡£
ΪÁËÔÚÂß¼­ÉϱãÓÚ×éÖ¯ÐźÅÁ¿£¬ÐźÅÁ¿»úÖÆÖÐÓÐÒ»¸ö¸ÅÄîÊÇÐźÅÁ¿×é¡£ÎÒÃÇ¿ÉÒÔ°ÑÒ»¸öÐÅ
ºÅÁ¿×éÖд´½¨Ïà¹ØµÄÐźÅÁ¿£¬ÕâÑùÂß¼­ÉÏÇåÎúÒ²±ãÓÚ¹ÜÀí¡£ÔÚʹÓÃ֮ǰÄãͬÑùÐèÒª¶ÔËûÃÇ
½øÐгõʼ»¯£ºÉú³É»ò´ò¿ªÐźÅÁ¿×飬ÏòÆäÖÐÉú³É»òɾ³ýÄãÖ¸¶¨µÄÐźÅÁ¿¡£
¶ÔÐźÅÁ¿µÄ²Ù×÷Ö»ÓÃÁ½ÖÖ£¬Ëû¶¼ÊÇͨ¹ýsemopº¯ÊýÖеÄsops²ÎÊýÀ´Ö¸¶¨µÄ£¬Èç¹ûÕâ¸ö²ÎÊý
ÊÇÒ»¸öÊý×éµÄ»°£¬ÄÇô¾ÍÊǶԶà¸öÐźÅÁ¿½øÐвÙ×÷¡£Sops²ÎÊýÖеÄsem_op×Ö¶ÎÖ¸Ã÷Á˶ÔÐÅ
ºÅÁ¿½øÐеÄÊÇP²Ù×÷»¹ÊÇV²Ù×÷¡£ÄãÖ»ÒªÖ¸¶¨¾ÍÐÐÁË£¬¾ßÌåµÄ²Ù×÷²»ÐèÒªÄãȥʵÏÖ£¬º¯ÊýÖÐ
¶¼ÒѾ­ÌṩÁË¡£Ê¹ÓÃÐźÅÁ¿£¬ÄãµÃÇå³þÐźÅÁ¿×éidºÍÐźÅÁ¿ÔÚÐźÅÁ¿×éÖеÄλÖã¨ÆäʵҲ
¾ÍÊÇÁíÒ»¸öid£©¡£Ò»¸öÐźÅÁ¿±ØÐëÊôÓÚÒ»¸öÐźÅÁ¿×飬·ñÔò²»Äܱ»ÏµÍ³ËùʹÓá£Çмǣ¡
ÐźÅÁ¿ºÍÐźÅÁ¿×éÊDz»»á±»ÏµÍ³Ëù×Ô¶¯ÇåÀíµÄ£¬ËùÒÔµ±ÄãµÄ½ø³ÌÍ˳öÇ°£¬Ç§Íò±ðÍüÁËÇåÀí
ÄãÉú³ÉµÄÄÇЩÐźÅÁ¿ÃÇ¡£
ÐźÅÁ¿¼È¿ÉÒÔʵÏÖ»¥³â£¬Ò²¿ÉÒÔʵÏÖͬ²½£¬ÕâÀï¾Í²»ËµÁË£¬²Ù×÷ϵͳ¿Î³ÌÖÐÊÇÓнéÉܵġ£



3£®ÏûÏ¢¶ÓÁÐ
ÏûÏ¢¶ÓÁÐÊDZȽϸ߼¶µÄÒ»ÖÖ½ø³Ì¼äͨÐÅ·½·¨£¬ÒòΪËüÕæµÄ¿ÉÒÔÔÚ½ø³Ì¼ä´«ËÍmassege£¬Äã
´«ËÍÒ»¸ö"I seek you"¶¼¿ÉÒÔ¡£
Ò»¸öÏûÏ¢¶ÓÁпÉÒÔ±»¶à¸ö½ø³ÌËù¹²Ïí£¨IPC¾ÍÊÇÔÚÕâ¸ö»ù´¡ÉϽøÐеģ©£»Èç¹ûÒ»¸ö½ø³ÌµÄ
ÏûϢ̫¶àÒ»¸öÏûÏ¢¶ÓÁзŲ»Ï£¬Ò²¿ÉÒÔÓöàÓÚÒ»¸öµÄÏûÏ¢¶ÓÁУ¨²»¹ý¿ÉÄܹÜÀí»á±È½Ï¸´
ÔÓ£©¡£¹²ÏíÏûÏ¢¶ÓÁеĽø³ÌËù·¢Ë͵ÄÏûÏ¢ÖгýÁËmassege±¾ÉíÍ⻹ÓÐÒ»¸ö±êÖ¾£¬Õâ¸ö±êÖ¾
¿ÉÒÔÖ¸Ã÷¸ÃÏûÏ¢½«ÓÉÄĸö½ø³Ì»òÕßÊÇÄÄÀà½ø³Ì½ÓÊÜ¡£Ã¿Ò»¸ö¹²ÏíÏûÏ¢¶ÓÁеĽø³ÌÕë¶ÔÕâ¸ö
¶ÓÁÐÒ²ÓÐ×Ô¼ºµÄ±êÖ¾£¬¿ÉÒÔÓÃÀ´ÉùÃ÷×Ô¼ºµÄÉí·Ý¡£
¶ÔÓÚϵͳÖеÄÿһ¸öÏûÏ¢¶ÓÁУ¬¶¼ÓÐÒ»¸öÊý¾Ý½á¹¹À´´ú±íËü£¬Õâ¸öÊý¾Ý½á¹¹ÊÇmsqid_ds£¬
ÕâÀïÂÔÈ¥²»½²£¬ÔÚÖпÉÒÔ¿´µ½ËüµÄÔ­ÐÍ¡£

3£®1ÏûÏ¢¶ÓÁÐÏà¹Øº¯Êý
ʹÓÃÏûÏ¢¶ÓÁÐ֮ǰ£¬ÄãҪô»ñµÃÕâ¸öÏûÏ¢¶ÓÁУ¬ÒªÃ´×Ô¼º½¨Á¢Ò»¸ö£¬·ñÔòÊDz»ÄÜʹÓÃÏûÏ¢
¶ÓÁеģ¨ÎÒ¾õµÃÕⶼÏñÊǶàÓàµÄ»°£¬Çë¼ûÁ£©¡£µ±Õâ¸öÏûÏ¢¶ÓÁв»ÔÙʹÓÃʱ£¬Ò²Ò»¶¨ÒªÓÐ
Ò»¸ö½ø³ÌÀ´É¾³ýÏûÏ¢¶ÓÁУ¬ÏµÍ³ÊDz»»á×Ô¶¯µÄÇåÀíÏûÏ¢¶ÓÁкÍmsgid_dsµÄ¡£

Int msgget(key_t key, int msgflg);
»ñÈ¡Ò»¸ö´æÔÚµÄÏûÏ¢¶ÓÁеÄID£¬»òÕßÊǸù¾Ý¸ú¶¨µÄȨÏÞ´´½¨Ò»¸öÏûÏ¢¶ÓÁС£µ«ÊÇÔõôÑùÈ¥
ɾ³ýÕâ¸öÏûÏ¢¶ÓÁУ¬ÎÒ»¹²»Ê®·ÖÇå³þ¡£
Int msgctl(int msqid, int cmd, struct msqid_ds *buf);
ÓÃÀ´´Ómsqid_dsÖлñÈ¡ºÜ¶àÏûÏ¢¶ÓÁб¾ÉíµÄÐÅÏ¢¡£
Int msgsnd(int msqid, void *msgp, size_t msgsz, int msgflg);
ÓÃÓÚÏò¶ÓÁз¢ËÍÏûÏ¢¡£
Int msgrcv(int msqid, void *msgp, size_t msgsz, long int msgtyp, int
msgflg);
´Ó¶ÓÁÐÖнÓÊÕÏûÏ¢¡£
ÎÒÕâ¸öÎĵµÀïÃæ¶ÔÏûÏ¢¶ÓÁÐÖеÄһЩÁÙ½çÇé¿öËùÊö²»¶à£¬ÒòΪÕâÊÇÎÒµÄС½á£¬¶ø·Ç½éÉÜ¡£
ÔÚGNU C¿â¼¼ÊõÖпÉÒÔ¿´µ½ËüµÄÏêϸ½éÉÜ¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 2 ÌõÆÀÂÛ

  1. nicmonicmo ÓÚ 2006-08-08 18:39:16·¢±í:

    ddddddd

  2. cheshi ÓÚ 2006-07-21 19:22:13·¢±í:

    GOOD