¸®´ª½º ±âŸ ÀÚ·á

HomePage Backward Forward Post Reply List
Delete Modify
  Á¦¸ñ   gdbm °­Á #2 1998/05/10 (14:14)
À̸§ ±èÈ¿¿ø
¹øÈ£ 22
Á¶È¸ 325
º»¹®


#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