ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : docbook>zlib_prog



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
HTMLº¯È¯ ¹®¼­
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN"> 
<article lang="ko"> 
 
<!--           --> 
<!-- ¹®¼­ Á¤º¸ --> 
<!--           --> 
<articleinfo> 
    <title>Zlib Ȱ¿ë</title> 
 
    <author> 
        <surname>À± »ó¹è</surname> 
 
        <affiliation> 
            <address> 
                <email>dreamyun@yahoo.co.kr</email> 
            </address> 
        </affiliation> 
    </author> 
    <revhistory> 
        <revision> 
            <revnumber>0.8</revnumber> 
            <date>2003³â 10¿ù 2ÀÏ 23½Ã</date> 
            <revremark>ÃÖÃÊ ¹®¼­ÀÛ¼º</revremark> 
        </revision> 
    </revhistory> 
</articleinfo> 
 
 
<!--                                                                 --> 
<!-- ¼½¼Ç ½ÃÀÛ                                                       --> 
<!--                                                                 --> 
<section> 
    <title>¼Ò°³</title> 
    <para> 
        PC¿Í ÀÎÅͳÝÀÇ º¸±ÞÀ¸·Î µ¥ÀÌÅÍÀÇ ¾çÀÌ ±ÞÁõÇϰí ÀÖ´Ù. ±×·¯´Ù º¸´Ï  
        µ¥ÀÌÅÍ ÀúÀå°ø°£¿¡ ¸¹Àº ¾Ð¹ÚÀ» ¹Þ°Ô µÈ´Ù. °Å±â¿¡ ´õºÒ¾î ÀÎÅͳÝÀÌ  
        ´ëÁßÈ­ µÇ¸é¼­ µ¥ÀÌÅ͸¦ Àü¼ÛÇϱâ À§ÇÑ ³×Æ®¿öÅ©ÀÚ¿ø¿¡ÀÇ ¾Ð¹Úµµ  
        ¹Þ°Ô µÇ¾ú´Ù.  
    </para> 
    <para> 
        ÀÌ·± ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ­ °³¹ßµÈ°Ô µ¥ÀÌÅÍ ¾ÐÃà±â¼úÀ̸ç, Zlib´Â  
        ¹ü¿ëÀûÀÎ µ¥ÀÌÅÍÀÇ ¾ÐÃàÀ» À§ÇÑ ¸ñÀûÀ¸·Î °³¹ßµÇ¾ú´Ù. ÀÌ ¹®¼­´Â  
        Zlib¸¦ ¼³¸íÇϱâ À§ÇÑ ¸ñÀûÀ¸·Î ÀÛ¼ºµÇ¾úÀ¸¸ç, ·¹ÆÛ·±½º ¿ëµµ·Î½á  
        À¯¿ëÇÏ°Ô »ç¿ë°¡´É ÇÒ°ÍÀÌ´Ù. ¶ÇÇÑ ¹®¼­ÀÇ ¸¶Áö¸·¿¡ °£´ÜÇÑ È°¿ë¿¹Á¦¸¦  
        µÒÀ¸·Î½á Á»´õ ½±°Ô ÀÌÇØÇϵµ·Ï ¹è·ÁÇϰí ÀÖ´Ù.  
    </para> 
    <para> 
        ÀÌ ¹®¼­ÀÇ ¸¹Àº ³»¿ëµéÀº <ulink url=http://www.gzip.org/zlib/manual.html>Zlib·¹ÆÛ·±½º ¸Þ´º¾ó</ulink>À»  
        Âü°í Çϰí ÀÖ´Ù.  
    </para> 
</section> 
 
<section> 
    <title>Zlib¸¦ ÀÌ¿ëÇÑ ¾ÐÃà ÇÁ·Î±×·¡¹Ö</title> 
    <para> 
        À̹øÀå¿¡¼­´Â Zlib¿¡ ´ëÇÑ °³·«ÀûÀÎ ¼Ò°³¿Í ÇÔ²² Zlib¿¡¼­  
        Á¦°øÇÏ´Â °¢Á¾ ÇÔ¼ö¿¡ ´ëÇØ¼­ ´Ù·ç°Ô µÈ´Ù. ±×·¯³ª ¸ðµç ÇÔ¼öµé¿¡ ´ëÇØ¼­´Â  
        ´Ù·çÁö ¾Ê°í ÇÁ·Î±×·¡¹Ö Çϴµ¥ ÇÊ¿äÇÑ Çʼö ÇÔ¼öµé¸¸À» ´Ù·ê °ÍÀÌ´Ù. À̿ܿ¡µµ  
        zlib¿¡¼­ Á¦°øµÇ´Â ÇÔ¼öµéÀÌ Àִµ¥, ÀϹÝÀûÀÎ ÀÀ¿ë ¾ÖÇø®ÄÉÀ̼ÇÀÇ  
        Á¦ÀÛ¿¡´Â °ÅÀÇ »ç¿ëµÇÁö ¾Ê´Â ÇÔ¼öµéÀÌ´Ù. À̵é ÇÔ¼öµé¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ¼³¸íÀº   
        <ulink url=http://www.gzip.org/zlib/manual.html>Zlib·¹ÆÛ·±½º ¸Þ´º¾ó</ulink>¸¦ Âü°íÇϱ⠹ٶõ´Ù. 
    </para> 
    <para> 
        Áö±ÝÀº ´ÜÁö ÀÚÁÖ »ç¿ëµÇ´Â À¯Æ¿¸®Æ¼ ÇÔ¼öµé¸¸ ¼³¸íÇϰí Àִµ¥,  
        ½Ã°£ÀÌ µÈ´Ù¸é zlib¿¡¼­ Á¦°øÇÏ´Â ´Ù¸¥ ÇÔ¼öµé¿¡ ´ëÇØ¼­µµ ¼³¸íÇϵµ·Ï ÇϰڴÙ.   
        (zlib¿¡¼­´Â Å©°Ô À¯Æ¿¸®Æ¼ ÇÔ¼ö, ±âº» ÇÔ¼ö, °í±Þ ÇÔ¼ö ¼¼°³·Î ºÐ·ùµÇ¾î¼­  
        ¼³¸íÇϰí ÀÖ´Ù.) 
    </para> 
    <section> 
        <title>À¯Æ¿¸®Æ¼ ÇÔ¼ö¼³¸í</title> 
        <para> 
            À¯Æ¿¸®Æ¼ ÇÔ¼öµéÀº ¸» ±×´ë·Î ÀÀ¿ë ¾ÖÇø®ÄÉÀÌ¼Ç ·¹º§¿¡¼­  
            °£´ÜÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â ³ôÀº ¼öÁØÀÇ ÇÔ¼öµé·Î½á ´ÙÀ½Àå¿¡ ¼³¸íÇÏ°ÔµÉ  
            ±âº»ÇÔ¼öµéÀÇ ÀÀ¿ëÇÔ¼öµéÀÌ´Ù.   
        </para> 
        <para> 
            ³ôÀº ¼öÁØÀÇ ÇÔ¼öµéÀÎ ¸¸Å­ »ç¿ëÇÏ±â ÆíÇÏ°í ´ëºÎºÐÀÇ ¾ÐÃàÀÛ¾÷À» Çϴµ¥ À־  
            ¿©±â¿¡¼­ Á¦°øÇÏ´Â °Íµé·Î ÃæºÐÇÒ °ÍÀÌ´Ù.  
        </para> 
        <para> 
            ÇÔ¼öµéÀ» »ìÆìº¸¸é ¾Ë°ÚÁö¸¸ ÆÄÀϰü·Ã ÀÛ¾÷À» À§ÇØ »ç¿ëµÇ´Â ÇÔ¼öµé°ú À̸§À̳ª ¾²ÀÓ»õ°¡  
            ¸Å¿ì ºñ½ÁÇÏ´Ù´Â°É ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù. ±âÁ¸ÀÇ Ç¥ÁØÀûÀÎ ÇÔ¼öµé°ú ºñ½ÁÇÑ ÀÎÅÍÆäÀ̽º¸¦  
            À¯ÁöÇϹǷνá ÇÔ¼ö¸¦ ÀÌÇØÇÏ°í »ç¿ëÇϱⰡ Á»´õ ¼ö¿ùÇÏ´Ù.   
        </para> 
        <section> 
            <title>compress</title> 
            <para> 
                <screen> 
int compress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen); 
                </screen> 
                À̸§¿¡¼­ ¾Ë ¼ö ÀÖµíÀÌ µ¥ÀÌÅ͸¦ ¾ÐÃàÇϱâ À§Çؼ­ »ç¿ëµÈ´Ù. sourceµ¥ÀÌÅ͸¦  
                sourceLenÅ©±â ¸¸Å­ ¾ÐÃàÀ» ÇØ¼­ dest ¹öÆÛ·Î º¹»çÇÑ´Ù.  
                destLenÀº dest¹öÆÛÀÇ ÃÑ Å©±âÀε¥, ÃÖ¼ÒÇÑ sourceLen 0.1%Á¤µµ Å©°Ô Àâ¾Æ  
                ÁÖ¾î¾ß ÇÑ´Ù. ¾ÐÃàÀ» ½Ç½ÃÇÒ °æ¿ì ¹Ýµå½Ã µ¥ÀÌÅÍÀÇ Å©±â°¡ ÀÛ¾ÆÁú °Å¶ó°í  
                »ý°¢ÇÒ ¼ö ÀÖ°ÚÁö¸¸ ¿ÀÈ÷·Á Ä¿Áö´Â °æ¿ìµµ »ý±æ ¼ö Àֱ⠶§¹®ÀÌ´Ù.   
                ¸Å¿ì ÀÛÀº µ¥ÀÌÅ͸¦ ¾ÐÃàÇϰųª ÀÌ¹Ì ¾ÐÃàµÈ µ¥ÀÌÅ͸¦ ¾ÐÃàÇÏ´Â °æ¿ì  
                ¾ÐÃàµÈ µ¥ÀÌÅÍ¿¡ zlibÇì´õ°¡ ºÙ¾î¼­ ¿ÀÈ÷·Á µ¥ÀÌÅÍÀÇ ¾çÀÌ ´õ Ä¿Áú ¼öµµ ÀÖ´Ù.   
            </para> 
            <para> 
                <emphasis>compress</emphasis>´Â ¼º°øÀûÀ¸·Î ¾ÐÃàµÇ¾úÀ» °æ¿ì  
                <emphasis>Z_OK</emphasis>¸¦  
                ¸Þ¸ð¸®°¡ ÃæºÐÇÏÁö ¾ÊÀ»°æ¿ì <emphasis>Z_MEM_ERROR</emphasis>, ¹öÆÛÀÇ  
                Å©±â°¡ ÃæºÐÇÏÁö ¾ÊÀ»°æ¿ì <emphasis>Z_BUF_ERROR</emphasis>¸¦ ¸®ÅÏÇÑ´Ù.  
            </para> 
        </section> 
        <section> 
            <title>compress2</title> 
            <para> 
                <screen> 
int compress2(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen, int level); 
                </screen> 
                levelÀ̶õ ÀÎÀÚ°¡ Ãß°¡µÈ°Í ¿Ü¿¡´Â <emphasis>compress</emphasis>¿Í ¿ÏÀüÈ÷  
                µ¿ÀÏÇÏ´Ù. levelÀº ¾ÐÃàÀÇ Á¤µµ¸¦ °áÁ¤Çϱâ À§Çؼ­ »ç¿ëÇÏ´Â °ÍÀ¸·Î 0¿¡¼­ 9»çÀÌÀÇ  
                °ªÀ» °¡Áø´Ù. 0Àº °¡Àå ºü¸¥ ¾ÐÃà½Ã°£À» º¸¿©ÁÖ¸ç 9´Â ÃÖ°íÀÇ ¾ÐÃà·üÀ» º¸¿©ÁØ´Ù.  
                ¸¸¾à levelÀ» 0À¸·Î ÇÏ¿´´Ù¸é ÀüÇô ¾ÐÃàÀ» ÇÏÁö ¾Ê´Â´Ù´Â Àǹ̷Πµ¥ÀÌÅÍ º¹»ç¸¦ ÇÏ´Â °Í°ú  
                µ¿ÀÏÇÑ È¿°ú¸¦ º¸¿©ÁØ´Ù.   
            </para> 
            <para> 
                ¸®ÅϰªÀº commpress¿Í ¿ÏÀüÈ÷ µ¿ÀÏÇÔÀ¸·Î Âü°íÇϱ⠹ٶõ´Ù.   
            </para> 
        </section> 
        <section> 
            <title>uncompress</title> 
            <para> 
                <screen> 
int uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen);  
                </screen> 
                ¾ÐÃàµÈ µ¥ÀÌÅÍÀÇ ¾ÐÃàÀ» Ç®±â À§Çؼ­ »ç¿ëÇÑ´Ù. ¾ÐÃàµÈ µ¥ÀÌÅÍ <emphasis>source</emphasis>¸¦  
                sourceLen±æÀ̸¸Å­ Àо ¾ÐÃàÀ» ÇØÁ¦ÇÑ´ÙÀ½ <emphasis>dest</emphasis>¹öÆÛ¿¡ ÀúÀåÇÑ´Ù.  
                <emphasis>destLen</emphasis>´Â dest¹öÆÛÀÇ Å©±â·Î ¾ÐÃàÀÌ Ç®¸± µ¥ÀÌÅÍÀÇ Å©±â¸¦ ¿¹»óÇØ¼­  
                ÃæºÐÈ÷ Å©°Ô Àâ¾Æ¾ß ÇÑ´Ù. ¾ÐÃàÀ» ÇØÁ¦ÇÏ´Â ÀÛ¾÷ÀÌ ¼º°øÀûÀ¸·Î ÀÌ·ç¾îÁ³´Ù¸é ½ÇÁ¦ ¾ÐÃàÀÌ  
                Ç®¸° µ¥ÀÌÅÍÀÇ Å©±â°¡ destLen¿¡ µé¾î°¡°Ô µÈ´Ù.   
            </para> 
            <para> 
                ¼º°øÀûÀ¸·Î ¼öÇàµÇ¾úÀ» °æ¿ì Z_OK°¡ ¸®ÅϵǸç, ¸Þ¸ð¸®°¡ ÃæºÐÄ¡ ¾ÊÀ»°æ¿ì Z_MEM_ERROR,  
                ¹öÆÛÀÇ Å©±â°¡ ÃæºÐÄ¡ ¾ÊÀ» °æ¿ì Z_BUF_ERROR, ¾ÐÃ൥ÀÌÅͰ¡ À߸øµÇ¾î ÀÖÀ» °æ¿ì  
                Z_DATA_ERRORÀ» ¸®ÅÏÇÑ´Ù.    
            </para> 
        </section> 
        <section> 
            <title>gzopen</title> 
            <para> 
                <screen> 
typedef voidp gzFile; 
 
gzFile gzopen(const char *path, const char *mode); 
                </screen> 
                ¾ÐÃàµÈ µ¥ÀÌÅ͸¦ Àаųª ¾²±â À§Çؼ­ gzipÆÄÀÏÀ» ¿¬´Ù. µÎ¹øÂ° ÀÎÀÚÀÎ  
                <emphasis>mode</emphasis>´Â "rb", "wb"µîÀÌ »ç¿ëµÈ´Ù.  
                ÆÄÀÏÀÌ ¾ÐÃàÆ÷¸äµÈ ÆÄÀÏÀÌ ¾Æ´Ï´õ¶óµµ »ó°üÀº ¾ø´Ù. ¼º°øÀûÀ¸·Î  
                ÆÄÀÏÀ» ¿­¾úÀ»°æ¿ì gzFile¸¦ ¸®ÅÏÇϴµ¥, ¾ÐÃàÆÄÀÏ ½ºÆ®¸²À¸·Î gzread, gzwriteµîÀÇ  
                ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼­ ½ÇÁúÀûÀÎ ¾ÐÃàÀÛ¾÷À» ÇÒ¶§ (ÆÄÀÏÁöÁ¤ÀÚ)ó·³ »ç¿ëµÈ´Ù.    
            </para> 
            <para> 
                ÆÄÀÏÀ» ¿­±â¿¡ ½ÇÆÐÇßÀ» °æ¿ì NULLÀ» ¸®ÅÏÇÑ´Ù.   
            </para> 
        </section> 
        <section> 
            <title>gzdopen</title> 
            <para> 
                <screen> 
gzFile gzdopen(int fd, const char *mode); 
                </screen> 
                ¿­°íÀÚ ÇÏ´Â ÆÄÀÏÀÇ À̸§ÀÌ µé¾î°¡´Â ´ë½Å ÆÄÀÏ ÁöÁ¤ÀÚ°¡ µé¾î°£´Ù´Â °Í¸¸À» Á¦¿ÜÇϰí´Â  
                gzopen°ú µ¿ÀÏÇÏ°Ô ÀÛµ¿ÇÑ´Ù. ÆÄÀÏÁöÁ¤ÀÚ´Â open, creat, pipe, filnoµîÀ¸·Î »ý¼ºµÈ´Ù.   
            </para> 
            <para> 
                ½ÇÆÐÇßÀ» °æ¿ì NULLÀ» ¸®ÅÏÇÑ´Ù.  
            </para> 
        </section> 
        <section> 
            <title>gzsetparams</title> 
            <para> 
                <screen> 
int gzsetparams(gzFile file, int level, int strategy); 
                </screen> 
                µ¿ÀûÀ¸·Î ¾ÐÃà·¹º§(level)°ú ¾ÐÃàÁ¤Ã¥(strategy)À» º¯°æÇϱâ À§Çؼ­ »ç¿ëµÈ´Ù.  
                levelÀº ¾ÐÃà·üÀ» ÁöÁ¤Çϱâ À§Çؼ­ »ç¿ëµÈ´Ù.   
            </para> 
            <para> 
                ¾ÐÃàÁ¤Ã¥Àº Z_DEFAULT_STRATEGY¿Í Z_FILTERED, Z_HUFFMAN_ONLY Áß Çϳª¸¦  
                ¼±ÅÃÇÒ ¼ö ÀÖ´Ù.  
            </para> 
            <para> 
                ¼º°øÇßÀ» °æ¿ì Z_OK¸¦ ½ÇÆÐÇßÀ» °æ¿ì Z_STREAM_ERRORÀ» ¸®ÅÏÇÑ´Ù.  
            </para> 
        </section> 
        <section> 
            <title>gzread</title> 
            <para> 
                <screen> 
int gzread(gzFile file, voidp buf, unsigned len); 
                </screen> 
                ¾ÐÃàÆÄÀÏ ½ºÆ®¸² file·Î ºÎÅÍ lenÅ©±â¸¸Å­ Àо ¾ÐÃàÀ» Ǭ´ÙÀ½ buf¿¡ ÀúÀåÇÑ´Ù.  
                ¸¸¾à ÆÄÀÏÀÌ gzip Æ÷¸ËÀÌ ¾Æ´Ò°æ¿ì ´Ü¼øÈ÷ µ¥ÀÌÅ͸¦ º¹»çÇÑ´Ù.   
            </para> 
            <para> 
                ¼º°øÇßÀ» °æ¿ì ¾ÐÃàÇ®¸° µ¥ÀÌÅÍÀÇ Å©±â¸¦ µÇµ¹·ÁÁØ´Ù. ÆÄÀÏÀÇ ³¡ÀÏ °æ¿ì 0À»  
                ±×¹ÛÀÇ ¿¡·¯¿¡ ´ëÇØ¼­´Â -1À» ¸®ÅÏÇÑ´Ù.    
            </para> 
        </section> 
        <section> 
            <title>gzwrite</title> 
            <para> 
                <screen> 
int gzwrite (gzFile file, const voidp buf, unsigned len); 
                </screen> 
                <emphasis>buf</emphasis>·Î ºÎÅÍ lenÅ©±â¸¸Å­ µ¥ÀÌÅ͸¦ Àоîµé¿©¼­ ¾ÐÃàÀ» ÇÑ´ÙÀ½  
                file¿¡ ¾´´Ù. ¼º°øÀûÀ¸·Î ¼öÇàµÇ¾ú´Ù¸é ÀÔ·ÂµÈ ¿øº» µ¥ÀÌÅÍÀÇ Å©±â°¡ ¸®Åϵǰí,  
                ½ÇÆÐ ÇßÀ» °æ¿ì 0ÀÌ ¸®ÅϵȴÙ.  
            </para> 
        </section> 
        <section> 
            <title>int VAgzprintf</title> 
            <para> 
                <screen> 
int VAgzprintf(gzFile file, const char *format, ...);  
                </screen> 
                Æ÷¸Ë ÀúÀåÀ» À§ÇÑ fprintf(3)¸¦ ¾Ë°í ÀÖÀ» °ÍÀÌ´Ù. ÀÌ ÇÔ¼ö´Â fprintfÀÇ ¾ÐÃà¹öÁ¯À̶ó°í  
                ÇÒ¸¸ÇÏ´Ù. Æ÷¸ËÀ» ¹Þ¾Æ¼­ ¾ÐÃàÇÑ´ÙÀ½¿¡ ÀúÀåÇÑ´Ù. ¼º°øÇßÀ» °æ¿ì ¾ÐÃà¿¡ »ç¿ëµÈ µ¥ÀÌÅÍÀÇ  
                Å©±â¸¦ ¸®ÅÏÇÏ°í ½ÇÆÐÇßÀ» °æ¿ì 0À» ¸®ÅÏÇÑ´Ù.      
            </para> 
        </section> 
        <section> 
            <title>gzputs</title> 
            <para> 
                <screen> 
int gzputs(gzFile file, const char *s); 
                </screen> 
                ³ÎÀÌ Á¦°ÅµÈ ¹®ÀÚ¿­À» ¹Þ¾Æµé¿©¼­ ¾ÐÃàÇÑ´Ù.  
            </para> 
            <para> 
                ¼º°øÇßÀ» °æ¿ì ¹®ÀÚ¿­ÀÇ Å©±â¸¦ ±×·¸Áö ¾ÊÀ» °æ¿ì -1À» ¸®ÅÏÇÑ´Ù.           
            </para> 
        </section> 
        <section> 
            <title>gzgets</title> 
            <para> 
                <screen> 
char *gzgets(gzFile file, char *buf, int len); 
                </screen> 
                ¾ÐÃàÆÄÀÏ ½ºÆ®¸² file·Î ºÎÅÍ µ¥ÀÌÅ͸¦ Àоîµé¿©¼­ ¾ÐÃàÀ» Ǭ´ÙÀ½ ¹®ÀÚ¿­À» µÇµ¹·ÁÁØ´Ù.  
                µ¥ÀÌÅ͸¦ ÀÐÀ» ¶§´Â len - 1¸¸Å­À» ÀÐ¾î µéÀÌ¸ç °³Ç๮ÀÚ¸¦ ¸¸³ª¸é ¸®ÅϽÃŲ´Ù.  
                fgets(3)ÀÇ ¾ÐÃà¹öÁ¯ÀÌ´Ù.     
            </para> 
            <para> 
                ½ÇÆÐ ÇßÀ»°æ¿ì Z_NULLÀ» ¸®ÅÏÇÑ´Ù.  
            </para> 
        </section> 
        <section> 
            <title>gzputc</title>     
            <para> 
                <screen> 
int gzputc(gzFile file, int c); 
                </screen> 
                ¹®ÀÚ <emphasis>c</emphasis>¸¦ unsigned char·Î º¯°æÇÑ´ÙÀ½ file·Î ÀúÀåÇÑ´Ù.  
                ¼º°øÇϸé ÀÔ·ÂÇÑ °ªÀ» ¸®ÅÏÇÏ°í ½ÇÆÐÇßÀ» °æ¿ì -1À» ¸®ÅÏÇÑ´Ù.  
            </para> 
        </section> 
        <section> 
            <title>gzgetc</title> 
            <para> 
                <screen> 
int gzgetc(gzFile file); 
                </screen> 
                ¾ÐÃàÆÄÀÏ·Î ºÎÅÍ 1¹ÙÀÌÆ®¸¦ ÀоîµéÀδÙ. ¼º°øÇϸé ÀоîµéÀÎ °ªÀ» ¸®ÅÏÇ졒  
                ÆÄÀÏÀÇ ³¡À» ¸¸³µ°Å³ª ½ÇÆÐÇßÀ» °æ¿ì -1À» ¸®ÅÏÇÑ´Ù.   
            </para> 
        </section> 
        <section> 
            <title>gzfluseh</title> 
            <para> 
                <screen> 
int gzflush(gzFile file, int flush); 
                </screen> 
                Ãâ·Â´ë±â ÁßÀÎ ¸ðµç µ¥ÀÌÅ͸¦ ÆÄÀÏ¿¡ ¾´´Ù.  
            </para> 
            <para> 
                ¼º°øÇßÀ» °æ¿ì Z_OK¸¦ ¸®ÅÏÇÑ´Ù.  
            </para> 
        </section> 
        <section> 
            <title>gzseek</title> 
            <para> 
                <screen> 
z_off_t gzseek(gzFile file, z_off_t offset, int whence); 
                </screen> 
                <emphasis>file</emphasis>¿¡¼­ gzread³ª gzwrite¸¦ ÀÌ¿ëÇÒ ½ÃÀÛ À§Ä¡¸¦  
                ÁöÁ¤Çϱâ À§Çؼ­ »ç¿ëÇÑ´Ù. lseek(2)¿Í ºñ½ÁÇÏ´Ù°í º¼¼ö ÀÖ´Ù.  
                <emphasis>offset</emphasis>Àº ¾ÐÃàÀÌ Ç®¸° µ¥ÀÌÅÍÀÇ º¯À§¸¦ °¡¸£Å²´Ù.  
                <emphasis>whence</emphasis>´Â lseek(2)¿¡¼­¿Í µ¿ÀÏÇÑ °ªÀ» »ç¿ëÇÒ ¼ö  
                ÀÖÁö¸¸ SEEK_END°¡ Áö¿øµÇÁö ¾Ê´Â´Ù. whence¿¡ ´ëÇØ¼­ ÀÚ¼¼È÷ ¾Ë±æ ¿øÇÑ´Ù¸é  
                <ulink url=http://www.joinc.co.kr/modules.php?name=News&file=article&sid=98>lseek¸¦ ÀÌ¿ëÇÑ ÆÄÀϳ» À§Ä¡À̵¿</ulink>¸¦ Âü°íÇϱ⠹ٶõ´Ù. 
            </para> 
            <para> 
                ÀÌ ÇÔ¼ö´Â ¾ÐÃàµÈ ÆÄÀϳ»¿¡¼­ À§Ä¡À̵¿À» ÇÏ´Â°Ô ¾Æ´Ñ ¾ÐÃàÀÌ Ç®¸° µ¥ÀÌÅͳ»¿¡¼­ÀÇ  
                À§Ä¡À̵¿À» ÇÏ°Ô µÇ¹Ç·Î, ÆÄÀÏÀÌ Àбâ À§Çؼ­ ¿­·Á ÀÖ´Â °æ¿ì ±Øµµ·Î ´À¸®°Ô ÀÛµ¿ÇÒ °ÍÀÌ´Ù.  
                ¸¸¾à ÆÄÀÏÀÌ ¾²±â À§Çؼ­ ¿­·Á ÀÖ´Ù¸é ´ÜÁö Àü¹æÇâ À̵¿(forward seek)¸¸ Çã¿ë µÈ´Ù.    
            </para>  
            <para>  
                ¼º°øÇßÀ» °æ¿ì ¾ÐÃàÀÌ Ç®¸° µ¥ÀÌÅÍÀÇ ½ÃÀÛÁöÁ¡¿¡¼­ÀÇ º¯À§°ªÀ» µÇµ¹·ÁÁÖ°í  
                ½ÇÆÐ ÇßÀ»°æ¿ì -1À» ¸®ÅÏÇÑ´Ù.   
            </para>  
        </section> 
        <section> 
            <title>gzrewind</title> 
            <para> 
                <screen> 
int gzrewind(gzFile file); 
                </screen> 
                ÆÄÀÏÀ» óÀ½À¸·Î µÇµ¹¸°´Ù. Àбâ¸ðµå·Î ¿­¾úÀ» ¶§¸¸ »ç¿ë°¡´ÉÇÏ´Ù.  
                gzrewind(file)´Â gzseek(file, 0L, SEEK_SET)¿Í µ¿ÀÏÇÏ´Ù.  
            </para> 
        </section> 
        <section> 
            <title>gzeof</title> 
            <para> 
                <screen> 
int gzeof(gzFile file); 
                </screen> 
                ÆÄÀÏ¿¡¼­ ³¡À» ¸¸³¯°æ¿ì 1À» ¸®ÅÏÇÑ´Ù. ±×·¸Áö ¾ÊÀ»°æ¿ì 0À» ¸®ÅÏÇÑ´Ù.   
            </para> 
        </section> 
        <section> 
            <title>gzclose</title> 
            <para> 
                <screen> 
int gzclose(gzFile file); 
                </screen> 
                ¾ÐÃà°ú °ü·ÃµÈ ¸ðµç ÀÛ¾÷ÀÌ ³¡³ª°í Fluseh±îÁö ¼º°øÀûÀ¸·Î ¼öÇàÇß´Ù¸é, gzclose¸¦ È£ÃâÇØ¼­  
                ¾ÐÃàµÈ ÆÄÀÏÀ» ´Ý°í ¸ðµç ÀÚ¿øÀ» ÇØÁ¦ ÇØ¾ß ÇÑ´Ù.  
            </para> 
        </section> 
        <section> 
            <title>gzerror</title> 
            <para> 
                <screen> 
const char * gzerror(gzFile file, int *errnum); 
                </screen> 
                ¸¶Áö¸· ¿¡·¯¿¡ ´ëÇÑ ¿¡·¯ ¸Þ½ÃÁö¸¦ µÇµ¹·ÁÁØ´Ù. errnumÀº zlib¿¡¼­ »ç¿ëÇÏ´Â ¿¡·¯¹øÈ£´Ù.  
                ¸¸¾à ¿¡·¯°¡ zlib°¡ ¾Æ´Ñ ´Ù¸¥ (¿¹¸¦ µé¾î¼­ ÆÄÀÏ ½Ã½ºÅÛ)°÷¿¡¼­ ¹ß»ýÇÑ °ÍÀ̶ó¸é errnumÀº 
                Z_ERRNO·Î ä¿öÁø´Ù. À̶§´Â errno¸¦ °Ë»ç Çϵµ·Ï ÇÑ´Ù.  
            </para> 
        </section> 
        <section> 
            <title>zlibVersion</title> 
            <para> 
                <screen> 
const char *zlibVersion(void); 
                </screen> 
                ¾ÖÇø®ÄÉÀ̼ÇÀÌ »ç¿ëÇÏ´Â zlib¹öÁ¯À» È®ÀÎÇϱâ À§Çؼ­ »ç¿ëÇÑ´Ù.  
                ¸¸¾à ¾ÖÇø®ÄÉÀ̼ÇÀÇ zlib¹öÁ¯°ú zlib.h¿¡ ¼±¾ðµÈ ZLIB_VERSION¹öÁ¯ÀÇ Ã¹±ÛÀÚ°¡  
                Ʋ¸®´Ù¸é ÀÌ ¾ÖÇø®ÄÉÀ̼ÇÀº zlibȣȯ ¹®Á¦·Î »ç¿ëÇÒ ¼ö ¾ø°ÔµÈ´Ù.  
            </para> 
            <para> 
                ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î ¹öÁ¯È£È¯¿©ºÎ¸¦ üũÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.  
                <screen> 
... 
if (strncmp(zlibVersion(), ZLIB_VERSION, 1) != 0) 
{ 
    printf("Version error\n"); 
    exit(1); 
} 
... 
                </screen> 
            </para> 
        </section> 
    </section> 
    <section> 
        <title>¿¹Á¦</title> 
        <para> 
            2°³ÀÇ ¿¹Á¦ÆÄÀÏÀ» ÁغñÇß´Ù. Çϳª´Â ƯÁ¤ÆÄÀÏÀ» ¾ÐÃàÇÏ´Â ÇÁ·Î±×·¥ÀÌ°í  
            ¶Ç´Ù¸¥ Çϳª´Â ¾ÐÃàµÈ ÆÄÀÏÀÇ ¿ø¹® ³»¿ëÀ» Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù.  
            ¸Å¿ì °£´ÜÇÑ ¼Ò½º À̹ǷΠ¼³¸íÀº ÁÖ¼®À¸·Î ´ë½ÅÇϵµ·Ï ÇϰڴÙ.   
        </para> 
        <section> 
            <title>ÆÄÀÏ ¾ÐÃà ¿¹Á¦</title> 
            <para> 
                <emphasis>¿¹Á¦ : jzip.c</emphasis> 
                    <screen> 
/* 
 * ÆÄÀϸí : jzip.c  
 * »ç¿ë¹ý : # jzip [filename] 
 * ¾ÐÃàÇϰíÀÚ ÇÏ´Â filename¸¦ ÀÔ·ÂÇϸé filename.gzÀ̶ó´Â ¾ÐÃàÆÄÀÏÀÌ  
 * »ý¼ºµÈ´Ù.   
 */ 
 
// zlib Çì´õÆÄÀÏ   
#include <zlib.h> 
 
// Ç¥ÁØ CÇì´õÆÄÀÏ 
#include <stdio.h> 
#include <fcntl.h> 
 
int main(int argc, char **argv) 
{ 
    char    *filename   = NULL; 
    char    *gzfilename = NULL; 
 
    gzFile  *zfp; 
    int     fd; 
    int     n; 
    char    buf[256]; 
    int     lerrno; 
 
    if(argc !=2) 
    { 
        printf("Usage : jzip [file name]\n");  
        exit(0); 
    } 
    filename = argv[1]; 
    // ¾ÐÃàÆÄÀÏÀÇ À̸§Àº filename.gz À¸·Î ÇÑ´Ù.  
    gzfilename = (char *)malloc(strlen(filename)*sizeof(char)); 
    sprintf(gzfilename, "%s.gz", filename); 
 
    // ¾ÐÃà¿øº» ÆÄÀÏÀÌ Á¸ÀçÇÏ´ÂÁö È®ÀÎÇÑ´Ù.  
    if (access(filename, F_OK) != 0)  
    { 
        printf("Á¸ÀçÇÏÁö ¾Ê´Â ÆÄÀÏÀÔ´Ï´Ù\n"); 
        exit(0); 
    } 
 
    if ((fd = open(filename, O_RDONLY)) < 0) 
    { 
        printf("file open error\n"); 
        exit(0);     
    } 
 
    // ¾ÐÃàÆÄÀÏÀ» ¿¬´Ù.  
    if ((zfp = gzopen(gzfilename, "wb")) == NULL) 
    { 
        exit(0); 
    } 
 
    // ¿øº»ÆÄÀÏÀ» ¿¡¼­ µ¥ÀÌŸ¸¦ ÀоîµéÀÌ°í  
    // gzwriteÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼­ µ¥ÀÌÅ͸¦ ¾ÐÃàÇÏ°í ÆÄÀÏ¿¡ ¾´´Ù.    
    while((n = read(fd, buf, 255)) > 0) 
    { 
        if (gzwrite(zfp, buf, n) < 0) 
        { 
            printf("%s\n",gzerror(zfp, &lerrno)); 
            exit(0); 
        } 
    } 
    gzclose(zfp); 
    printf("¾ÐÃà ¼º°ø : %s => %s\n", filename, gzfilename); 
} 
                </screen> 
            ÄÄÆÄÀÏ ÇÒ ¶§´Â ¹Ýµå½Ã zlib¸¦ ¸µÅ© ½ÃÄÑÁà¾ß ÇÑ´Ù.   
                <screen> 
# gcc -o jzip jzip.c -lz 
                </screen> 
            </para> 
        </section> 
        <section> 
            <title>¾ÐÃà ÇØÁ¦ ¿¹Á¦</title> 
            <para> 
                À̹ø ÇÁ·Î±×·¥Àº ¾ÐÃàµÈ text¹®¼­ÀÇ ¿ø·¡ ³»¿ëÀ» º¸¿©ÁÖ´Â  
                °£´ÜÇÑ ÇÁ·Î±×·¥ÀÌ´Ù.  
            </para> 
            <para> 
                <emphasis>¿¹Á¦ : jcat.c</emphasis> 
                <screen> 
#include <zlib.h> 
#include <stdio.h> 
 
int main(int argc, char **argv) 
{ 
    char *filename = NULL; 
 
    gzFile *zfp; 
    char buf[1024]; 
 
    if (argc != 2) 
    { 
        printf("Usage : jcat [file name]\n"); 
        exit(0); 
    } 
    filename = argv[1]; 
 
    if ((zfp = gzopen(filename, "rb")) == NULL) 
    { 
        exit(0); 
    } 
 
    while(gzgets(zfp, buf, 1023) != NULL) 
    { 
        printf("%s", buf); 
    } 
 
    gzclose(zfp); 
} 
                </screen> 
            </para> 
        </section> 
    </section> 
    <section> 
        <title>³×Æ®¿öÅ© ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ÀÇ È°¿ë</title> 
        <para> 
            zlib´Â ÀÏ¹Ý ÆÄÀÏÀ» ¾ÐÃàÇϱâ À§ÇÑ ¿ëµµ·Î ¸Å¿ì ÈǸ¢ÇÑ µµ±¸À̱ä ÇÏÁö¸¸  
            ÀÎÅͳÝÀ» ÅëÇØ ´ë·®ÀÇ Á¤º¸¸¦ º¸³»´Â ¿äÁò¿¡´Â ƯÈ÷ ³×Æ®¿öÅ©¿¡¼­ÀÇ µ¥ÀÌÅÍ ¾ÐÃàÀ»  
            À§Çؼ­µµ Áß¿äÇÏ°Ô »ç¿ëµÈ´Ù.   
        </para> 
        <para> 
            ´ëºÎºÐÀÇ À¥¼­¹ö¿Í À¥Å¬¶óÀÌ¾ðÆ®´Â zlib¸¦ ÀÌ¿ëÇØ¼­ ÀÚüÀûÀ¸·Î ÇÊ¿äÇÑ µ¥ÀÌÅ͸¦  
            ¾ÐÃàÇϰí ÇØÁ¦Çϸ鼭 °¡´ÉÇÑÇÑ ³×Æ®¿öÅ©ÀÇ ÀÚ¿øÀ» È¿À²ÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖµµ·Ï  
            ÀÛ¼ºµÇ¾îÁö°í ÀÖ´Ù. °ø¿ëÀ¸·Î »ç¿ëµÇ´Â ³×Æ®¿öÅ© º¸´Ù´Â ¾Æ¹«·¡µµ °³ÀÎÀÌ  
            »ç¿ëÇÏ´Â PCÀÇ (CPU)ÀÚ¿øÀ» Ȱ¿ëÇÏ´Â°Ô ¿©·¯¸ð·Î È¿À²ÀûÀ̱⠶§¹®ÀÌ´Ù.      
        </para> 
        <para> 
            ³×Æ®¿öÅ© ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ µ¥ÀÌÅ͸¦ ¾ÐÃà½ÃÄѼ­ Àü¼ÛÇϱâ À§Çؼ­´Â  
            uncompress, compressµîÀÇ ¾ÐÃà¸í·ÉÀ» ÁÖ·Î »ç¿ëÇÑ´Ù. ÀÌµé ³»¿ë¿¡ ´ëÇØ¼­´Â  
            ÀÚ¼¼È÷ ´Ù·çÁö ¾ÊÀ» °ÍÀÌ´Ù. Á÷Á¢ ±¸ÇöÇØº¸´Â °Íµµ ¸Å¿ì Àç¹ÌÀÖÀ» °ÍÀÌ´Ù.   
        </para> 
    </section> 
</section> 
 
</article> 
 
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.