ÿһ¸ö´ò¿ªµÄÎļþ¡¢Ì×½Ó×Ö£¨Socket£©¡¢¹ÜµÀ£¨Pipe£©»òÉ豸ÔÚ½ø³ÌÄÚ²¿¶¼ÓÐÒ»¸öΨһµÄÎļþÃèÊö·ûÓëÖ®¶ÔÓ¦
ÕâЩÎļþÃèÊö·û²»½ö´ú±íÁË×ÊÔ´£¬»¹³ÐÔØ×Žø³ÌÓë×ÊÔ´Ö®¼äµÄÁ¬½Ó
Òò´Ë£¬ÕýÈ·¹ÜÀíºÍÊÍ·ÅÕâЩ×ÊÔ´¶ÔÓÚÈ·±£ÏµÍ³Îȶ¨ÐÔºÍÐÔÄÜÖÁ¹ØÖØÒª
¶ø`close()`º¯Êý£¬×÷ΪLinuxϵͳµ÷ÓÃÖ®Ò»£¬ÕýÊÇÎÒÃǹÜÀíÎļþÃèÊö·û¡¢ÊÍ·Å×ÊÔ´µÄ¹Ø¼ü¹¤¾ß
±¾ÎĽ«´Ó`close()`º¯ÊýµÄ»ù±¾¸ÅÄî³ö·¢£¬ÉîÈë̽Ì֯乤×÷ÔÀí¡¢Ê¹Óó¡¾°¡¢´íÎó´¦ÀíÒÔ¼°ÔÚʵ¼Ê±à³ÌÖеÄ×î¼Ñʵ¼ù
Ò»¡¢`close()`º¯ÊýµÄ»ù±¾¸ÅÄî `close()`º¯ÊýÊÇPOSIX±ê×¼¶¨ÒåµÄÒ»¸öϵͳµ÷Óã¬ÓÃÓڹرÕÒ»¸öÒÑ´ò¿ªµÄÎļþÃèÊö·û£¬´Ó¶øÊÍ·ÅÓëÖ®¹ØÁªµÄϵͳ×ÊÔ´
ÆäÔÐͶ¨ÒåÔÚ`
- ·µ»ØÖµ£º³É¹¦Ê±·µ»Ø0£»Ê§°Üʱ·µ»Ø-1£¬²¢ÉèÖÃ`errno`ÒÔָʾ´íÎóÀàÐÍ
¶þ¡¢`close()`µÄ¹¤×÷ÔÀí
µ±`close()`º¯Êý±»µ÷ÓÃʱ£¬ÏµÍ³»áÖ´ÐÐÒÔϲ½Ö裺
1.ÑéÖ¤ÎļþÃèÊö·û£ºÊ×ÏÈ£¬ÏµÍ³»á¼ì²éÌṩµÄÎļþÃèÊö·ûÊÇ·ñÓÐЧÇÒÊôÓÚµ±Ç°½ø³Ì
2.ÊÍ·Å×ÊÔ´£ºÈç¹ûÎļþÃèÊö·ûÓÐЧ£¬ÏµÍ³»á¸ù¾ÝÆäÀàÐÍ£¨ÈçÆÕͨÎļþ¡¢Ì×½Ó×Ö¡¢¹ÜµÀµÈ£©Ö´ÐÐÏàÓ¦µÄ×ÊÔ´ÊͷŲÙ×÷ ÀýÈ磬¶ÔÓÚÎļþ£¬ÏµÍ³»áÊÍ·ÅÎļþ±íÏîºÍÄڴ滺³åÇø£»¶ÔÓÚÌ×½Ó×Ö£¬ÏµÍ³»áÖÕÖ¹ÍøÂçÁ¬½Ó²¢ÊÍ·ÅÏà¹ØÊý¾Ý½á¹¹
3.¸üÐÂÎļþÃèÊö·û±í£ºÏµÍ³»á´Óµ±Ç°½ø³ÌµÄÎļþÃèÊö·û±íÖÐÒÆ³ý¸ÃÃèÊö·û£¬Ê¹Æä¿ÉÒÔ±»ÖØÐ·ÖÅä
4.·µ»Ø½á¹û£ºÈç¹ûËùÓвÙ×÷³É¹¦Íê³É£¬close()·µ»Ø0£»·ñÔò£¬·µ»Ø-1²¢ÉèÖÃ`errno`ÒÔָʾ´íÎóÀàÐÍ£¬Èç`EBADF`£¨ÎÞЧµÄÎļþÃèÊö·û£©¡¢`EINTR`£¨²Ù×÷±»ÐźÅÖжϣ©µÈ
Èý¡¢`close()`µÄʹÓó¡¾°
`close()`º¯ÊýÔÚLinux±à³ÌÖÐÎÞ´¦²»ÔÚ£¬ÆäÓ¦Óó¡¾°°üÀ¨µ«²»ÏÞÓÚ£º
1.Îļþ²Ù×÷£ºÔÚ¶ÁÈ¡»òдÈëÎļþºó£¬Ê¹ÓÃclose()¹Ø±ÕÎļþÃèÊö·û£¬È·±£Êý¾ÝÕýȷдÈë´ÅÅ̲¢ÊÍ·ÅÎļþ×ÊÔ´
2.ÍøÂçͨÐÅ£ºÔÚ½¨Á¢TCP/UDPÁ¬½Ó»ò¼àÌýÌ×½Ó×Öºó£¬Í¨¹ý`close()`¶Ï¿ªÁ¬½Ó£¬ÊÍ·ÅÍøÂç¶Ë¿Ú×ÊÔ´
3.½ø³Ì¼äͨÐÅ£ºÔÚʹÓùܵÀ»òFIFO½øÐнø³Ì¼äͨÐÅʱ£¬`close()`ÓÃÓڹرչܵÀµÄÒ»¶Ë£¬Í¨Öª¶Ô·½½ø³ÌͨÐŽáÊø
4.×ÊÔ´¹ÜÀí£ºÔÚ´ò¿ªÉ豸Îļþ»òÌØÊâÎļþ£¨Èç`/dev/zero`¡¢`/dev/random`£©ºó£¬Í¨¹ý`close()`ÊÍ·Åϵͳ×ÊÔ´
ËÄ¡¢`close()`µÄ´íÎó´¦Àí
¾¡¹Ü`close()`ÊÇÒ»¸ö³£¼ûµÄϵͳµ÷Ó㬵«ÔÚʵ¼Ê±à³ÌÖУ¬ÕýÈ·´¦ÀíÆä·µ»ØÖµºÍDZÔÚ´íÎóͬÑùÖØÒª ³£¼ûµÄ´íÎó´¦Àí²ßÂÔ°üÀ¨£º
1.¼ì²é·µ»ØÖµ£ºÃ¿´Îµ÷ÓÃclose()ºó£¬¶¼Ó¦¼ì²éÆä·µ»ØÖµÊÇ·ñΪ-1£¬ÒÔÈ·¶¨²Ù×÷ÊÇ·ñ³É¹¦
2.ʹÓÃerrno£ºµ±close()ʧ°Üʱ£¬Í¨¹ý¼ì²é`errno`µÄÖµÀ´Õï¶Ï´íÎóÔÒò ÀýÈ磬Èç¹û`errno`±»ÉèÖÃΪ`EBADF`£¬Ôò±íÃ÷ÌṩµÄÎļþÃèÊö·ûÎÞЧ
3.ºöÂÔÌØ¶¨´íÎó£ºÔÚijЩÇé¿öÏ£¬Èç³¢ÊԹرÕÒ»¸öÒѾ¹Ø±ÕµÄÎļþÃèÊö·û£¬ËäÈ»`close()`»áʧ°Ü²¢ÉèÖÃ`errno`Ϊ`EBADF`£¬µ«ÕâÖÖ´íÎóͨ³£¿ÉÒÔ°²È«µØºöÂÔ£¬ÒòΪ×ÊÔ´ÒѾ±»ÊÍ·Å
4.ÈÕÖ¾¼Ç¼£º¶ÔÓÚ·ÇÔ¤ÆÚµÄ´íÎó£¬Ó¦¼Ç¼ÏêϸµÄ´íÎóÐÅÏ¢£¬ÒÔ±ãÓÚÎÊÌâ×·×ٺ͵÷ÊÔ
Îå¡¢`close()`µÄ×î¼Ñʵ¼ù
ΪÁ˸ßЧ¡¢°²È«µØÊ¹ÓÃ`close()`º¯Êý£¬ÒÔÏÂÊÇһЩ×î¼Ñʵ¼ù½¨Ò飺
1.¼°Ê±¹Ø±Õ£ºÒ»µ©ÎļþÃèÊö·û²»ÔÙÐèÒª£¬Ó¦Á¢¼´µ÷ÓÃclose()¹Ø±ÕËü£¬±ÜÃâ×ÊԴй¶
2.´íÎó´¦Àí£ºÊ¼ÖÕ¼ì²éclose()µÄ·µ»ØÖµ£¬²¢¸ù¾Ý´íÎóÀàÐͲÉÈ¡Êʵ±µÄ´ëÊ©
3.ÖØ¸´¹Ø±Õ¼ì²é£ºËäÈ»¶à´Î¹Ø±Õͬһ¸öÎļþÃèÊö·ûͨ³£Ö»»áµ¼ÖµÚÒ»´Îµ÷Óóɹ¦£¬ºóÐøµ÷ÓÃʧ°Ü²¢ÉèÖÃ`errno`Ϊ`EBADF`£¬µ«ÔÚ±àд½¡×³´úÂëʱ£¬Ó¦¿¼ÂÇʹÓñê־λ»ò¼¯ºÏÀ´¸ú×ÙÄÄЩÎļþÃèÊö·ûÒѱ»¹Ø±Õ
4.×ÊÔ´ÇåÀí£ºÔÚ³ÌÐòÍ˳ö»òÒì³£ÖÕֹǰ£¬È·±£ËùÓдò¿ªµÄÎļþÃèÊö·û¶¼±»ÕýÈ·¹Ø±Õ ¿ÉÒÔʹÓÃÐźŴ¦Àí»úÖÆÀ´È·±£ÔÚ½ÓÊÕµ½ÖÕÖ¹ÐźÅʱִÐÐÇåÀí²Ù×÷
5.ʹÓøü¸ß¼¶±ðµÄ½Ó¿Ú£ºÔÚijЩÇé¿öÏ£¬Ê¹Óø߼¶±ðµÄI/O¿â£¨ÈçC++µÄ`
Áù¡¢½áÂÛ
`close()`º¯Êý×÷ΪLinuxϵͳµ÷ÓÃÖв»¿É»òȱµÄÒ»²¿·Ö£¬¶ÔÓÚ×ÊÔ´¹ÜÀíºÍϵͳÎȶ¨ÐÔ¾ßÓÐÖÁ¹ØÖØÒªµÄ×÷Óà ÕýÈ·Àí½âºÍʹÓÃ`close()`£¬²»½öÓÐÖúÓÚ±ÜÃâ×ÊԴй¶ºÍϵͳ±ÀÀ££¬»¹ÄÜÌáÉý³ÌÐòµÄ½¡×³ÐÔºÍÐÔÄÜ Í¨¹ý×ñÑÉÏÊö×î¼Ñʵ¼ù£¬¿ª·¢Õß¿ÉÒÔ±àд³ö¸ü¼Ó¸ßЧ¡¢°²È«µÄ´úÂ룬ΪLinux»·¾³ÏµÄÓ¦ÓóÌÐò¿ª·¢µì¶¨¼áʵµÄ»ù´¡ ×ÜÖ®£¬`close()`ËäС£¬µ«ÔðÈÎÖØ´ó£¬ËüÊÇÁ¬½Ó³ÌÐòÓë²Ù×÷ϵͳ×ÊÔ´¹ÜÀíµÄÇÅÁº£¬ÖµµÃÎÒÃÇÉîÈëѧϰºÍ¾«ÐĶԴý