C¿Í C++°ü·Ã |
---|
Á¦¸ñ | 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 °Á´ À̸¸ ÁÙÀ̵µ·Ï ÇÏ°Ú½À´Ï´Ù. ´ÙÀ½¿¡ ±âȸ°¡ µÈ´Ù¸é Á» ´õ ´Ù¾çÇÑ ºÐ¾ß¿¡ ´ëÇؼ ¾Ë¾Æº¸µµ·Ï ÇÏ°Ú½À´Ï´Ù. ±×·³, ´ÙÀ½ ½Ã°£±îÁö... ¶ÇÄ¡ Çѵ¿ÈÆ µå¸² |