-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | about buffering | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | id: hkpco | | mail&msn: hkpco@korea.com | | homepage: http://hkpco.kr/ | -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- // printf() µîÀÇ Ãâ·Â ÇÔ¼ö¸¦ »ç¿ëÇÒ ¶§ ¹®ÀÚ¿­ÀÌ Áï½Ã Ãâ·ÂµÇÁö ¾Ê´Â °æ¿ì°¡ ¹Ù·Î ¹öÆÛ¸µ ¶§¹®ÀÔ´Ï´Ù. ±×¿¡´ëÇØ ¾´ ±ÛÀÔ´Ï´Ù. Ãâ·Â¹®À» »ç¿ëÇÏ¿´À»¶§ ¹Ù·Î È­¸é¿¡ Ãâ·ÂµÇÁö ¾Ê´Â »óŸ¦ ¹öÆÛ¸µ ¶Ç´Â ÀϽÃÀúÀå À̶ó°í ÇÕ´Ï´Ù. Ãâ·Â¹®¿¡¼­ °³Ç๮ÀÚ µûÀ§°¡ ¾ø´Ù¸é ¹öÆÛ¿¡ ÀúÀåµÈ µÚ ³ªÁß¿¡ Ãâ·ÂµË´Ï´Ù. ¾Æ·¡´Â ±× ÀÌÀ¯ * ÀϽÃÀúÀå(¹öÆÛ¸µ)ÀÇ ¸ñÀû: read()¿Í write()ÇÔ¼ö È£ÃâÀÇ ÃÖ¼ÒÈ­. ÀϽÃÀúÀå(¹öÆÛ¸µ)ÀÇ Á¾·ù´Â fully buffered line buffered unbuffered °¡ ÀÖ½À´Ï´Ù. (¿ÏÀüÀϽÃÀúÀå) (ÁÙ ÀϽÃÀúÀå) (ºñ ÀϽÃÀúÀå) ¸ÕÀú ¿ÏÀü ÀϽÃÀúÀåÀÇ °æ¿ì¿¡´Â ¹öÆÛÀÇ °ø°£ÀÌ ´Ù ä¿öÁ³À»¶§³ª fflush()¿Í °°Àº ÇÔ¼öµéÀ» ÅëÇÏ¿© ¹öÆÛ°¡ ¼öµ¿À¸·Î ºñ¿öÁö¸é¼­ stdout(Ç¥ÁØ ÆÄÀϵð½ºÅ©¸³ÅÍ)¿¡ Ãâ·ÂµË´Ï´Ù. Áï, ÀϽÃÀúÀåÀº printf(), scanf() µûÀ§ÀÇ ÇÔ¼ö ³»ºÎ¿¡¼­ µ¿ÀÛÇÏ´Â read()¿Í write()ÀÇ È£ÃâÀ» ÃÖ¼ÒÈ­ Çϱâ À§Çؼ­ Àá½Ã ¹öÆÛ¶ó´Â °ø°£¿¡ ÀúÀåµÇ¾ú´Ù°¡(\n¸¦ »ç¿ëÇÑ °æ¿ì´Â Á¦¿Ü) ¹öÆÛ°¡ ´Ù Â÷°Å³ª, fflush()¸¦ »ç¿ëÇϰųª, ½Ã°£ÀÌ Áö³ª¸é ÀÚµ¿À¸·Î ºñ¿öÁö°Ô(¹öÆÛ°¡ ºñ¿öÁø´Ù´Â ¸»Àº Ãâ·ÂÀ» ÀǹÌ) µË´Ï´Ù. ~ÁÙ ÀϽÃÀúÀå(Line buffered) °æ¿ì¿¡´Â \n À» ¸¸³µÀ»¶§ ¹öÆÛ¸¦ ºñ¿ó´Ï´Ù. ¶Ç, ÀÔ·ÂÀÌ ¿ä±¸µÉ¶§ ¸¶´Ù(scanfµîÀÇ ÇÔ¼ö È£Ãâ) ¹öÆÛ¸¦ ºñ¿ó´Ï´Ù. ~ºñ ÀϽÃÀúÀå(Unbuffered)Àº Ç¥ÁØ¿¡·¯·Î ¹®ÀÚ¿­ÀÌ Ãâ·ÂµÉ¶§´Â ¹öÆÛ¸µ µÇÁö ¾Ê°í ¹Ù·Î È­¸é¿¡ Ãâ·ÂµË´Ï´Ù. ÀÌ°ÍÀº µÇµµ·Ï »¡¸® ¿¡·¯°¡ º¸¿©Áú¼ö ÀÖµµ·Ï Çϱâ À§ÇÔÀÔ´Ï´Ù. ¸¸¾à ¹öÆÛ¸µÀ» ¿øÄ¡ ¾Ê´Â´Ù¸é setbuf() ÇÔ¼ö³ª setvbuf() ÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù. #include void setbuf( FILE *fp , char *buf ); int setvbuf( FILE *fp , char *buf , int mode , size_t size ); ¾Æ·¡ µÎ Äڵ带 Á÷Á¢ ½ÇÇà/ºñ±³ Çغ¸´Â°Íµµ ´«À¸·Î È®ÀÎÇÒ ¼ö ÀÖ´Â ÁÁÀº ¹æ¹ýÀÔ´Ï´Ù. /* stdout_p.c */ #include int main( void ) { int i=0; for( ; i<=99999 ; i++ ) { fprintf( stdout , "%d\r" , i ); // stdout print sleep(1); } printf( "\n" ); } /* stderr_p.c */ #include int main( void ) { int i=0; for( ; i<=99999 ; i++ ) { fprintf( stderr , "%d\r" , i ); // stderr print sleep(1); } printf( "\n" ); } ¸»ÇßµíÀÌ, Ç¥ÁØ¿¡·¯´Â ¹Ù·Î Ãâ·ÂµÈ´Ù°í ÇÏ¿´½À´Ï´Ù. ±×·¡¼­ stderr_p.c´Â ÄÄÆÄÀÏ µÚ ½ÇÇà½ÃÄÑ º¸¸é Ãâ·ÂÀÌ Áï°¢Áï°¢ µÇÁö¸¸ stdout_p.c´Â ¹öÆÛ°¡ ´Ù Â÷±â Àü ±îÁö´Â Ãâ·ÂµÇÁö ¾Ê½À´Ï´Ù. ÀÌ·±½ÄÀ¸·Î ¿¹Á¦¸¦ »ç¿ëÇÏ¿© È®ÀÎÇØ º¸´Â°Íµµ ÁÁÀº ¹æ¹ýÀÔ´Ï´Ù. End Of Document