C¿Í C++°ü·Ã

HomePage Backward Forward Post Reply List
Delete Modify
  Á¦¸ñ   GDBM °­Á #2/2 1998/07/20 (21:26)
À̸§ ±èÈ¿¿ø
¹øÈ£ 12
Á¶È¸ 789
º»¹® -----------------------------------------------------------------------------

         Çѵ¿ÈÆ´ÔÀÇ gdbm °­ÁÂÀÔ´Ï´Ù.


         -------------------------------------------------------------------


         #621   Çѵ¿ÈÆ   (ddoch   )
         [°­ÁÂ] DB¸¦ ÆíÇÏ°Ô, gdbm (2)                 06/02 20:16   499 line

         GNU gdbm (GNU DataBase Manager) ÇÁ·Î±×·¡¹Ö °­Á (2)
         ----------------------------------------------------

         4. ±×¿ÜÀÇ ´Ù¸¥ °Í

         1) µÎ°¡Áö À¯¿ëÇÑ º¯¼ö

          * gdbm_error gdbm_errno

             ÀÌ º¯¼ö´Â gdbm ¿¡¼­ÀÇ ¿¡·¯¿¡ ´ëÇÑ Á¤º¸¸¦ °¡Áö°í ÀÖ½À´Ï´Ù.
             gdbm.h ¿¡ ÀÌ·¯ÇÑ ¿¡·¯ °ªµé¿¡ ´ëÇÑ Á¤ÀÇ°¡ µé¾î ÀÖ½À´Ï´Ù.

          * const char * gdbm_version

             ¹öÁ¯ Á¤º¸¸¦ °¡Áö°í ÀÖ´Â ¹®ÀÚ¿­ÀÔ´Ï´Ù.

         2) UNIX Ç¥ÁØ dbm °ú ndbm °úÀÇ È£È¯¼º

          GNU 'dbm' (gdbm) ÆÄÀÏÀº ¾û¼ºÇÏÁö ¾Ê½À´Ï´Ù. ¿©·¯ºÐµéÀº UNIX 'cp'
         ¸í·ÉÀ» »ç¿ë
          ÇÏ¿© º¹»çÇÒ ¼ö ÀÖÀ¸¸ç, ¶ÇÇÑ º¹»çÇÏ´Â ÇÁ·Î¼¼½º°¡ È®ÀåÇÏÁöµµ
         ¾Ê½À´Ï´Ù.
          
          gdbm ÆÄÀÏÀº UNIX 'dbm' °ú 'ndbm' À» »ç¿ëÇÏ´Â ÇÁ·Î±×·¥¿¡ À־
         È£È¯¸ðµå°¡
          ÀÖ½À´Ï´Ù.
          
          GNU 'dbm' Àº 'dbm' °ú ȣȯµÇ´Â ÇÔ¼ö¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. 'dbm' °úÀÇ
         È£È¯¼ºÀ»
          À§Çؼ­´Â, ¿©·¯ºÐµéÀº 'dbm.h'¸¦ Æ÷ÇÔÇØ¾ß ÇÕ´Ï´Ù.
          
          È£È¯ ¸ðµå¿¡ À־´Â, gdbm ÆÄÀÏ Æ÷ÀÎÅÍ°¡ »ç¿ëÀÚ¿¡°Ô ÇÊ¿äÄ¡
         ¾ÊÀ¸¸ç, Çѹø
          ¿¡ ´Ü ÇϳªÀÇ ÆÄÀϸ¸ÀÌ ¿­¸± ¼ö ÀÖ½À´Ï´Ù. ȣȯ¸ðµå¿¡ À־ ¸ðµç
         »ç¿ëÀÚµéÀº   
          writer ·Î °£Áֵ˴ϴÙ. gdbm ÆÄÀÏÀÌ Àбâ¸ðµå¶ó¸é, ±×°ÍÀº writer ·Î¼­
         ½ÇÆÐÇÒ
          °ÍÀ̳ª, reader ·Î¼­ ±×°ÍÀ» ¿­±â¸¦ ½ÃµµÇÒ °ÍÀÔ´Ï´Ù. µ¥ÀÌÅ͸¦
         °¡¸£Å°´Â datum
          ±¸Á¶Á¦¿¡¼­ ¸®ÅÏµÈ ¸ðµç Æ÷ÀÎÅÍ´Â gdbm ÀÌ free¸¦ ÇÒ °ÍÀÔ´Ï´Ù. ±×
         Æ÷ÀÎÅ͵éÀº
          static Æ÷ÀÎÅÍ·Î Ãë±ÞµÇ¾î¾ß ÇÕ´Ï´Ù. Ç¥ÁØ UNIX 'dbm' ÀÌ ±×·±°Í ó·³
         ¸»ÀÔ´Ï´Ù.
          È£È¯µÇ´Â ÇÔ¼öÀÇ À̸§Àº UNIX dbm ÇÔ¼öÀÇ À̸§°ú °°½À´Ï´Ù. ¾Æ·¡¿¡¼­
         º¸ÀÌ´Â °Í
          Ã³·³....

             int dbminit(name);
             int store(key, content);
             datum fetch(key);
             int delete(key);
             datum firstkey();
             datum nextkey(key);
             int dbmclose();

          Ç¥ÁØ UNIX ÀÇ 'dbm' °ú GNU 'dbm' Àº ÆÄÀÏÀÇ µ¥ÀÌÅÍ ±¸Á¶°¡ ´Ù¸¨´Ï´Ù.
          * ¿©·¯ºÐµéÀº Ç¥ÁØ UNIX 'dbm' ÆÄÀÏÀ» GNU 'dbm' À¸·Î Á¢±ÙÇÒ ¼ö
         ¾ø½À´Ï´Ù.*
          ¸¸ÀÏ ¿©·¯ºÐµéÀÌ ¿À·¡µÈ µ¥ÀÌÅͺ£À̽º¸¦ GNU 'dbm' À¸·Î »ç¿ëÇÏ·Á¸é,
         ÀÌÀü¿¡
          'conv2gdbm' ÇÁ·Î±×·¥À» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ('conv2gdbm' ÇÁ·Î±×·¥Àº
         gdbm ¼Ò½º
          ¹èÆ÷º»¿¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.)

          ¶ÇÇÑ, GNU 'dbm' Àº 'ndbm' °ú ȣȯµÇ´Â ÇÔ¼ö¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. ndbm
         È£È¯¼º
          ÇÔ¼ö¸¦ »ç¿ëÇÏ·Á¸é, Çì´õÆÄÀÏ 'ndbm.h' ¸¦ Æ÷ÇÔÇØ¾ß ÇÕ´Ï´Ù.

          'ndbm' °ú ¸¶Âù°¡Áö·Î, ¸ðµç ¸®ÅÏµÈ datum Àº static ½ºÅä·ÎÁö·Î
         °£Áֵ˴ϴÙ.
          µû¶ó¼­ ¿©·¯ºÐµéÀº ¸Þ¸ð¸®¸¦ free ÇÒ ÇÊ¿ä´Â ¾øÀ¸¸ç, 'ndbm' ¿Í
         È£È¯µÇ´Â ÇÔ¼ö
          µéÀÌ ±×·¯ÇÑ ÀÏÀ» ´ë½ÅÇÒ °ÍÀÔ´Ï´Ù.

          ±× ÇÔ¼öµéÀº ´ÙÀ½°ú °°½À´Ï´Ù.

             DBM *dbm_open(name, flags, mode);
             void dbm_close(file);
             datum dbm_fetch(file, key);
             int dbm_store(file, key, `content', flags);
             int dbm_delete(file, key);
             datum dbm_firstkey(file);
             datum dbm_nextkey(file);
             int dbm_error(file);
             int dbm_clearerr(file);
            int dbm_dirfno(file);
             int dbm_pagfno(file);
             int dbm_rdonly(file);

          ¸¸ÀÏ, UNIX 'dbm' À̳ª 'ndbm' À» »ç¿ëÇÑ ¿À·¡µÈ C ÇÁ·Î±×·¥À»
         ÄÄÆÄÀÏÇؼ­
          'gdbm' ÆÄÀÏÀ» »ç¿ëÇϱ⸦ ¿øÇÑ´Ù¸é, ´ÙÀ½ÀÇ 'cc' ¸í·É¾î¸¦ ½ÇÇàÇϼ¼¿ä.

             cc ... -L /usr/local/lib -lgdbm

          '-L/usr/local/lib' ´Â ¿©·¯ºÐµéÀÌ 'gdbm' ¶óÀ̺귯¸®¸¦ °¡Áö°í ÀÖ´Â
         Àå¼Ò¿¡
          µû¶ó ´Ù¸¦ ¼ö ÀÖ½À´Ï´Ù.

         3) 'dbm' ÆÄÀÏÀ» 'gdbm' ÆÄÀÏ Æ÷¸ËÀ¸·Î º¯È¯Çϱâ

          'conv2gdbm' ÇÁ·Î±×·¥Àº 'dbm' µ¥ÀÌÅͺ£À̽º¸¦ 'gdbm' À¸·Î
         º¯È¯ÇÕ´Ï´Ù.
          »ç¿ë¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù.

               conv2gdbm [-q] [-b block_size] dbm_file [gdbm_file]

          ¿É¼ÇÀº ´ÙÀ½°ú °°½À´Ï´Ù.

          -q
             conv2gdbm Àº Á¶¿ëÇÏ°Ô ÀÛ¾÷À» ¼öÇàÇϵµ·Ï ÇÕ´Ï´Ù.

          block_size
             gdbm_open ÀÇ block_size ¿Í °°½À´Ï´Ù.
          
          dbm_file
            '.pag' ³ª '.dir' È®ÀåÀÚ¸¦ ´ÞÁö ¾Ê´Â 'dbm' ÆÄÀÏÀÇ À̸§

          gdbm_file
            ¿ÏÀüÇÑ gdbm ÆÄÀÏÀÇ À̸§ÀÔ´Ï´Ù. ¸¸ÀÏ ÁöÁ¤ÇÏÁö ¾Ê¾Ò´Ù¸é, gdbm
         ÆÄÀÏÀÇ À̸§Àº
            dbm ÆÄÀÏÀ̸§¿¡¼­ È®ÀåÀÚ¸¦ »«°ÍÀ» ±âº»À¸·Î ÃëÇÕ´Ï´Ù.

            conv2gdbm dbmfile

           ÀÌ·¯ÇÑ »ç¿ë¿¹´Â 'dbmfile.pag' ³ª 'dbmfile.dir' À» 'gdbm' ÆÄÀÏÀÎ 'dbmfile'
           ·Î º¯È¯ÇÕ´Ï´Ù.

         4) ¹ö±× ¸®Æ÷ÆÃ
          
          È¤½Ã GNU 'dbm' ¿¡ ¹ö±×°¡ ÀÖ´Ù¸é, ½ÅÁßÇÏ°Ô ÁøÂ¥ ¹ö±×ÀÎÁö¸¦
         È®ÀÎÇϽðí, ¹ö±×
          ¸®Æ÷Æÿ¡ °ü·ÃµÈ ¹®¼­¸¦ Àо½Ã°í ¾Æ·¡ÀÇ ÁÖ¼Ò·Î ¿¬¶ôÀ» Áֽʽÿä.

             Internet: `bug-gnu-utils@prep.ai.mit.edu'.
             UUCP: `mit-eddie!prep.ai.mit.edu!bug-gnu-utils'.

          È¤½Ã, Á¦Àdzª Áú¹®, º»·¡ÀÇ ¿µ¹® info ÆÄÀÏ¿¡ ¹ö±×°¡ ÀÖ´Ù´øÁö Çؼ­
         Á¦ÀÛÀÚ¿Í
          Á¢ÃËÇϽ÷Á¸é, ¾Æ·¡·Î ¿¬¶ôÇϽʽÿä.

                e-mail:  phil@cs.wwu.edu
                us-mail:  Philip A. Nelson
                          Computer Science Department
                          Western Washington University
                          Bellingham, WA 98226

          ¶ÇÇÑ, ¸ÞÀÎÅ×ÀÌ³Ê¿Í ¿¬¶ôÇϽ÷Á¸é ¾Æ·¡·Î ¿¬¶ôÇϽʽÿä.

                e-mail:  downsj@CSOS.ORST.EDU

         5. ÇÁ·Î±×·¥À» Çѹø Â¥º¾½Ã´Ù.
          
         gdbm ÀÇ ¼Ò½º ¹èÆ÷º» ¹èºÎ¿¡´Â Å×½ºÆ® ÇÁ·Î±×·¥ÀÌ 'gdbm' , 'dbm' ,
         'ndbm' º°·Î
         Çϳª¾¿ µé¾î ÀÖ½À´Ï´Ù. ÀÌ°ÍÀ» ÂüÁ¶ÇÏ½Ã¸é µµ¿òÀÌ µÇ½Ç °Ì´Ï´Ù.
         ±× Å×½ºÆ® ÇÁ·Î±×·¥¿¡¼­´Â ¹®ÀÚ¿­·Î µÈ Å°Çϳª¿Í ¿ª½Ã ¹®ÀÚ¿­·Î µÈ
         µ¥ÀÌÅÍ Çϳª¸¸
         À» ´Ù·ç°í ÀÖÁö¸¸ ÀÌ°ÍÀº ´õ¿í ´õ È®´ë°¡´ÉÇÕ´Ï´Ù.
         ¾Õ¼­µµ ¸»¾¸µå·ÈÁö¸¸, gdbm ÀÇ °¡Àå ±âº»ÀûÀÎ µ¥ÀÌÅÍÇüÀº ´ÙÀ½°ú
         °°½À´Ï´Ù.

                typedef struct {
                  char *dptr;
                  int  dsize;
                } datum;

          ÀÌ ±¸Á¶Ã¼´Â key ¿Í data °¡ ´Ù°°ÀÌ »ç¿ëÇÏ´Â ±¸Á¶Ã¼À̹ǷΠkey ¿Í data
         ÀÇ ±âº»
          ±¸Á¶´Â °°½À´Ï´Ù. ´Ù¸¸ dptr¿¡ ¾î¶² ÁÖ¼Ò¸¦ ÀúÀåÇÏ´À³Ä¿¡ µû¶ó¼­
         ¿ëµµ°¡ ´Þ¶óÁö
          ¹Ç·Î Ç×»ó ±¸º°ÇϽñ⠹ٶø´Ï´Ù.

          dptr ÀÌ char * À̱ä ÇÏÁö¸¸ ¾ó¸¶µçÁö º¹ÀâÇÏ°í µ¢Ä¡ Å« ±¸Á¶Ã¼¶óµµ ±×
         ÁÖ¼Ò¸¦
          ÀúÀå ÇÒ ¼ö ÀÖ½À´Ï´Ù. °¡·É, ¿©·¯°¡ÁöÀÇ µ¥ÀÌÅÍ ÇüÀÌ µé¾î ÀÖ´Â SOME
         ¶ó´Â ±¸Á¶
          Ã¼°¡ ÀÖ´Ù¸é,

          typedef struct something {
            int a;
            char b;
            .....
          } SOME;

          datum data_data;
          SOME mine;
          data_data.dptr = &mine;
          data_data.dsize = sizeof(SOME);

          /* DB  open and some DB handle functions ... */

          printf("%d\n", ((CARD *)(data_data.dptr))->a);

          ÀÌ·± ½ÄÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Áï, datum ÀÌ dptr Àº char * ÀÌÁö¸¸
         dptr ¸¸
          ÀÌÈÄ¿¡ Çüº¯È¯¸¸ ÇØÁÖ¸é ¾ó¸¶µçÁö ´Ù¸¥ ±¸Á¶Ã¼µµ »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â
         À̾߱âÀÔ´Ï´Ù.

          gdbm À» »ç¿ëÇÏ¿© ÇÁ·Î±×·¥À» Â¥¸é, ¿ÜºÎ ÀÎÅÍÆäÀ̽º¸¸ ÀÌ¿ëÇÏ°Ô
         µÇ¹Ç·Î, ¼Ò½ºÀÇ
          ¿ë·®Àº »ó´çÈ÷ ÁÙ¾îµé°Ô µË´Ï´Ù. ´Ù¸¸ datum Çü º¯¼öµéÀÌ ¾î¶»°Ô
         »ç¿ëÇÏ¿´´ÂÁö
          ¸¸ Àß »ìÆ쳪°¡¸é º° ¹«¸®°¡ ¾ø½À´Ï´Ù.

          ÀÚ, ±×·³ ÀÌÁ¦ ÇÁ·Î±×·¥À» Çѹø Â¥º¼±î¿ä?

          gdbm À» »ç¿ëÇؼ­ ÇÁ·Î±×·¥À» © ¶§¿¡´Â key °¡ À¯ÀÏÇÑ °ªÀÌ µÇ¾î¾ß
         Çϱ⠶§¹®¿¡
          »çÀü¿¡ ¾î¶² °ªÀ» key ·Î »ç¿ëÇÒ °ÍÀÎÁö »ý°¢ÇÏ¼Å¾ß ÇÕ´Ï´Ù. 'key' °ªÀº
         ¾î¶²
          ÇüÅ°¡ µÇ¾î¾ß ÇÑ´Ù´Â Á¦ÇÑÀº ¾øÁö¸¸, °¡·É 'À̸§' °ú °°Àº °æ¿ì¿¡´Â
         ¾ó¸¶µçÁö
          °°¾ÆÁú ¼ö ÀÖÀ¸¹Ç·Î ÇÇÇØ¾ß ÇÕ´Ï´Ù. µû¶ó¼­, ¿¹Á¦ ÇÁ·Î±×·¥¿¡¼­´Â
         'ÀϷùøÈ£'¸¦
          key ·Î »ç¿ëÇÏ°Ú½À´Ï´Ù.
          data ´Â, 'À̸§' °ú 'À̸ÞÀÏÁÖ¼Ò', 'ȸ»ç¸í', 'ÀüÈ­¹øÈ£', '»ß»ß¹øÈ£' ¸¦ °¡Áø
          CARD ¶ó´Â µ¥ÀÌÅÍ ÇüÀ» dptr·Î ÁöÁ¤À» Çؼ­ »ç¿ëÇÏ°Ú½À´Ï´Ù.

          ÇÁ·Î±×·¥Àº °£´ÜÇÑ ¸íÇÔ°ü¸® ÇÁ·Î±×·¥À¸·Î, °£´ÜÇÑ ÀÔ·Â, °Ë»ö, »èÁ¦,
         Ãâ·Â ¸¸
          À» Áö¿øÇÏ´Â °£´ÜÇÑ ±â´É¸¸ °®Ãß¾îÁ® ÀÖ½À´Ï´Ù. °Ë»ö ºÎºÐÀ» Á¶±Ý
         Ãß°¡ÇϽøé,
          Å° °ª¸¸ÀÌ ¾Æ´Ï¶ó °¢ CARD ÀÇ ¸â¹ö·Î °Ë»öµµ °¡´ÉÇÏ°Ô ¸¸µé ¼ö
         ÀÖ½À´Ï´Ù. ±×¿Ü
          ÀÇ ±â´ÉÀº ¿©·¯ºÐµéÀÌ Çѹø Ãß°¡Çغ¸¼¼¿ä.

          ±×·³, ÇÁ·Î±×·¥À» »ìÆ캾½Ã´Ù.

         -----------------------------------------------------------------------------

         /* gdbm Å×½ºÆ® ÇÁ·Î±×·¥ : ¸íÇÔ°ü¸®
         *
         * Designed by Han-donghun, 1997.5.30
         *
         * name    : name.c
         *
         * Compile : gcc -o name name.c -lgdbm
         * Usage   : name [database]
         *
         *           The default database is 'name.gdbm'.
         *
         * This is simple namecard manager program,
         *       using gdbm.
         *
         */

         #include <stdio.h>
         #include <string.h>
         #include <stdlib.h>
         #include <gdbm.h>    /* gdbm main header file*/

         #define NAME_SIZE 40
         #define EMAIL_SIZE  40
         #define CORP_SIZE 40
         #define TEL_SIZE  20
         #define PAGER_SIZE 20

         typedef struct _card {
          char name[NAME_SIZE];
          char email[EMAIL_SIZE];
          char corp[CORP_SIZE];
          char tel[TEL_SIZE];
          char pager[PAGER_SIZE];
         } CARD;

         CARD card;

         /* key is 8 unique number  */
         /* data is structured CARD */

         void main(int argc, char *argv[]) {
          char *my_db = "name.gdbm";
          char cmd_ch;
          int done = 0;
          int cache_size = 100;
          GDBM_FILE dbf;
          datum key_data;
          datum data_data;
          datum return_data;
          char key_line[512];
          char data_line[512];

          /* Initialize variables. */
          key_data.dptr = NULL;
          data_data.dptr = NULL;

          if (argc >= 2) {
            my_db = argv[1];
          }

          dbf = gdbm_open(my_db, 2048, GDBM_WRCREAT, 00664, NULL);

          if (dbf == NULL) {
            printf("gdbm_open failed, %s\n", gdbm_strerror(gdbm_errno));
            exit(1);
          }
          if (gdbm_setopt(dbf, GDBM_CACHESIZE, &cache_size, sizeof(int)) ==
         -1)
            {
            printf("gdbm_setopt failed, %s\n", gdbm_strerror(gdbm_errno));
            exit(1);
          }


          /* Welcome message. */
          printf("\nWelcome to the gdbm test program. Type ? for help.\n\n");
          while (!done) {
            printf("¸í  ·É => ");
            cmd_ch = getchar();
            if (cmd_ch != '\n') {
              char temp;
              do
                temp = getchar();
              while (temp != '\n' && temp != EOF);
            }
            if (cmd_ch == EOF) cmd_ch = 'q';
            switch (cmd_ch) {
              case '\n':
                printf("\n");
                break;

              case 'c': /* ¸íÇÔ °¹¼ö */
                {
                   int temp;
                  temp = 0;
                  if (key_data.dptr != NULL) free (key_data.dptr);
                  return_data = gdbm_firstkey (dbf);
                  while (return_data.dptr != NULL) {
                    temp++;
                    key_data = return_data;
                    return_data = gdbm_nextkey (dbf, key_data);
                    free (key_data.dptr);
                  }
                  printf (" %d °³ÀÇ ¸íÇÔÀÌ ÀÖ½À´Ï´Ù.\n\n", temp);
                  key_data.dptr = NULL;
                }
                break;

              case 'i': /* ¸íÇÔ ÀÔ·Â */
                if (key_data.dptr != NULL) free (key_data.dptr);

                printf("Å°     -> ");
                gets (key_line);
                 key_data.dptr = key_line;
                 key_data.dsize = strlen (key_line) + 1;  
                 printf("ÀÌ  ¸§ -> ");
                 gets(data_line);
                 strncpy(card.name, data_line, NAME_SIZE-1);
                 printf("À̸ÞÀÏ -> ");
                 gets(data_line);
                 strncpy(card.email, data_line, EMAIL_SIZE-1);
                 printf("ȸ  »ç -> ");
                 gets(data_line);
                 strncpy(card.corp, data_line, CORP_SIZE);
                 printf("Àü  È­ -> ");
                 gets(data_line);
                 strncpy(card.tel, data_line, TEL_SIZE);
                 printf("»ß  »ß -> ");
                 gets(data_line);
                 strncpy(card.pager, data_line, PAGER_SIZE);

                data_data.dptr = (char *)&card;
                data_data.dsize = sizeof(CARD);
                if (gdbm_store (dbf, key_data, data_data, GDBM_REPLACE) != 0)
                  printf ("¸íÇÔÀ» ãÀ» ¼ö ¾ø½À´Ï´Ù.\n");
                printf ("\n");
                key_data.dptr = NULL;
                break;

              case 'd': /* ¸íÇÔ »èÁ¦ */
                if (key_data.dptr != NULL) free (key_data.dptr);
                printf ("Å°     -> ");
                gets (key_line);
                key_data.dptr = key_line;
                 key_data.dsize = strlen (key_line)+1;
                if (gdbm_delete (dbf, key_data) != 0)
                   printf ("ÇØ´ç µ¥ÀÌÅÍ°¡ ¾ø°Å³ª Áö¿ìÁö ¸øÇß½À´Ï´Ù.\n");
                printf ("\n");
                key_data.dptr = NULL;
                break;

              case 's': /* ¸íÇÔ °Ë»ö */
                if (key_data.dptr != NULL) free (key_data.dptr);
                printf("Å°     -> ");
                gets(key_line);
                key_data.dptr = key_line;
                 key_data.dsize = strlen (key_line)+1;
                 return_data = gdbm_fetch (dbf, key_data);
                 if (return_data.dptr != NULL) {
                  printf("\n");
                  printf("Å°     : %s\n", key_line);
                  printf("ÀÌ  ¸§ : %s\n", ((CARD *)(return_data.dptr))->name);
                  printf("À̸ÞÀÏ : %s\n", ((CARD *)(return_data.dptr))->email);
                  printf("ȸ  »ç : %s\n", ((CARD *)(return_data.dptr))->corp);
                  printf("Àü  È­ : %s\n", ((CARD *)(return_data.dptr))->tel);
                  printf("»ß  »ß : %s\n", ((CARD *)(return_data.dptr))->pager);
                   printf("\n");
                   free (return_data.dptr);
                 }
                 else
                   printf ("¸íÇÔÀÌ ¾ø½À´Ï´Ù.\n\n");
                key_data.dptr = NULL;
                break;

              case 'l': /* ¸íÇÔ ¸ñ·Ï */
                if (key_data.dptr != NULL) free(key_data.dptr);
                key_data = gdbm_firstkey(dbf);
                while (key_data.dptr != NULL){
                   printf("\n");
                  return_data = gdbm_fetch(dbf, key_data);
                  printf("Å°    : %s\n", key_data.dptr);
                  printf("ÀÌ  ¸§: %s\n", ((CARD *)(return_data.dptr))->name);
                  printf("À̸ÞÀÏ: %s\n", ((CARD *)(return_data.dptr))->email);
                  printf("ȸ  »ç: %s\n", ((CARD *)(return_data.dptr))->corp);
                  printf("Àü  È­: %s\n", ((CARD *)(return_data.dptr))->tel);
                  printf("»ß  »ß: %s\n", ((CARD *)(return_data.dptr))->pager);
                  free(return_data.dptr);
                  return_data = gdbm_nextkey(dbf, key_data);
                  free(key_data.dptr);
                  key_data = return_data;
                }
                printf("\n");
                break;
              case 'q': /* Á¾·á */
                done = 1;
                break;

              case '?': /* µµ¿ò¸» */
              case 'h': /* µµ¿ò¸» */
                printf("\n");
                printf("c - ¸íÇÔ °¹¼ö\n");
                printf("d - ¸íÇÔ »èÁ¦\n");
                printf("s - ¸íÇÔ °Ë»ö\n");
                printf("i - ¸íÇÔ ÀÔ·Â\n");
                printf("l - ¸íÇÔ Àüü¸ñ·Ï\n");
                printf("q - Á¾     ·á\n");
                printf("\n");
                break;
            
              default:
                printf("Ʋ¸° ¸í·ÉÀÔ´Ï´Ù.\n\n");
                break;
            }
          } /* while (!done) */
          gdbm_close(dbf);
         }

         ----------------------------------------------------------------------------

         200 ¶óÀεµ ä µÇÁö ¾Ê´Â °£´ÜÇÑ ÇÁ·Î±×·¥ÀÔ´Ï´Ù.

         ´ÙÀ½Àº Å×½ºÆ® ³»¿ëÀÔ´Ï´Ù.

         ----------------------------------------------------------------------------

         queen:~/gdbm$ name test.gdbm

         Welcome to the gdbm test program. Type ? for help.

         ¸í  ·É => ?

         c - ¸íÇÔ °¹¼ö
         d - ¸íÇÔ »èÁ¦
         s - ¸íÇÔ °Ë»ö
         i - ¸íÇÔ ÀÔ·Â
         l - ¸íÇÔ Àüü¸ñ·Ï
         q - Á¾     ·á

         ¸í  ·É => i
         Å°     -> 1
         ÀÌ  ¸§ -> ¸®´ª¼­
         À̸ÞÀÏ -> linuxer@linux.or.kr
         È¸  »ç -> FREE MAN
         Àü  È­ -> 0000-1111-2222
         »ß  »ß -> 012-3333-4444

         ¸í  ·É => i
         Å°     -> 35
         ÀÌ  ¸§ -> ¶ÇÄ¡
         À̸ÞÀÏ -> ddoch@hitel.kol.co.kr
         È¸  »ç -> µÑ¸® ¿µÈ­ Ã⿬ Áß
         Àü  È­ -> 0000-1111-5555
         »ß  »ß -> 012-9999-8888

         ¸í  ·É => c
         2 °³ÀÇ ¸íÇÔÀÌ ÀÖ½À´Ï´Ù.

         ¸í  ·É => l

         Å°    : 1
         ÀÌ  ¸§: ¸®´ª¼­
         À̸ÞÀÏ: linuxer@linux.or.kr
         È¸  »ç: FREE MAN
         Àü  È­: 0000-1111-2222
         »ß  »ß: 012-3333-4444

         Å°    : 35
         ÀÌ  ¸§: ¶ÇÄ¡
         À̸ÞÀÏ: ddoch@hitel.kol.co.kr
         È¸  »ç: µÑ¸® ¿µÈ­ Ã⿬ Áß
         Àü  È­: 0000-1111-5555
         »ß  »ß: 012-9999-8888

         ¸í  ·É => d
         Å°     -> 35

         ¸í  ·É => l

         Å°    : 1
         ÀÌ  ¸§: ¸®´ª¼­
         À̸ÞÀÏ: linuxer@linux.or.kr
         È¸  »ç: FREE MAN
         Àü  È­: 0000-1111-2222
         »ß  »ß: 012-3333-4444

         ¸í  ·É => c
         1 °³ÀÇ ¸íÇÔÀÌ ÀÖ½À´Ï´Ù.

         ¸í  ·É => q
         queen:~/gdbm$ ls -l test.gdbm
         -rw-r--r--   1 ddoch     users        6469 May 30 21:32 test.gdbm
         queen:~/gdbm$

         ----------------------------------------------------------------------------

         »ç½Ç, gdbm Àº ´ëÇü DB ±¸Ãà¿¡ »ç¿ëÇϱ⿡´Â Á¶±Ý ºÎÁ·ÇÑ Á¡ÀÌ
         º¸ÀÔ´Ï´Ù.
         key ¿Í data ÀÇ ¿¬°ü¼ºÀÌ ºÎÁ·ÇÑ ¸éÀÌ º¸À̸ç, key °ªÀ̳ª data ÀÇ °¢°¢ÀÇ
         Ç׸ñ
         ¿¡ µû¸¥ ¼øÂ÷ÀûÀÎ Á¤·ÄÀÇ ¹®Á¦¿¡ À־µµ »ý°¢ÇØ ºÁ¾ß ÇÒ Á¡ÀÌ ÀÖ´Ù°í
         º¾´Ï´Ù.

         ÇÏÁö¸¸, ±×¿ÜÀÇ ´Ù¾çÇÑ ÀåÁ¡ÀÌ ÀÖÀ¸¹Ç·Î ÃæºÐÈ÷ È°¿ëÇÒ ¸¸ ÇϽÇ
         °Ì´Ï´Ù.
         DB ¿¡ SQL À» »ç¿ëÇÏ´Â postgres ¿Í °°Àº ¿ÜºÎ ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ´Â
         °Íµµ Çϳª
         ÀÇ ¹æ¹ýÀÌ µÇ°ÚÁö¿ä..

         gdbm °­Á´ À̸¸ ÁÙÀ̵µ·Ï ÇÏ°Ú½À´Ï´Ù.

         ´ÙÀ½¿¡ ±âȸ°¡ µÈ´Ù¸é Á» ´õ ´Ù¾çÇÑ ºÐ¾ß¿¡ ´ëÇؼ­ ¾Ë¾Æº¸µµ·Ï
         ÇÏ°Ú½À´Ï´Ù.

         ±×·³, ´ÙÀ½ ½Ã°£±îÁö...

         ¶ÇÄ¡ Çѵ¿ÈÆ µå¸²

HomePage Backward Forward Post Reply List
1998 by swindler