{"id":153,"date":"2010-04-17T23:35:08","date_gmt":"2010-04-18T08:35:08","guid":{"rendered":"\/blog\/?p=153"},"modified":"2023-09-21T09:39:18","modified_gmt":"2023-09-21T00:39:18","slug":"gdbm","status":"publish","type":"post","link":"https:\/\/hasu0707.duckdns.org\/blog\/?p=153","title":{"rendered":"gdbm"},"content":{"rendered":"\n<H1>\ubaa9\ucc28<\/H1>\n<UL>\n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC1\" name=\"TOC1\" target=\"_blank\" rel=\"noopener\">Copying Conditions.<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC2\" name=\"TOC2\" target=\"_blank\" rel=\"noopener\">Introduction to GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE>.<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC3\" name=\"TOC3\" target=\"_blank\" rel=\"noopener\">List of functions.<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC4\" name=\"TOC4\" target=\"_blank\" rel=\"noopener\">Opening the database.<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC5\" name=\"TOC5\" target=\"_blank\" rel=\"noopener\">Closing the database.<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC6\" name=\"TOC6\" target=\"_blank\" rel=\"noopener\">Inserting and replacing records in the database.<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC7\" name=\"TOC7\" target=\"_blank\" rel=\"noopener\">Searching for records in the database.<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC8\" name=\"TOC8\" target=\"_blank\" rel=\"noopener\">Removing records from the database.<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC9\" name=\"TOC9\" target=\"_blank\" rel=\"noopener\">Sequential access to records.<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC10\" name=\"TOC10\" target=\"_blank\" rel=\"noopener\">Database reorganization.<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC11\" name=\"TOC11\" target=\"_blank\" rel=\"noopener\">Database Synchronization<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC12\" name=\"TOC12\" target=\"_blank\" rel=\"noopener\">Error strings.<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC13\" name=\"TOC13\" target=\"_blank\" rel=\"noopener\">Seting options.<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC14\" name=\"TOC14\" target=\"_blank\" rel=\"noopener\">File Locking.<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC15\" name=\"TOC15\" target=\"_blank\" rel=\"noopener\">Two useful variables.<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC16\" name=\"TOC16\" target=\"_blank\" rel=\"noopener\">Compatibility with standard <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> and <CODE><FONT face=\uad74\ub9bc\uccb4>ndbm<\/FONT><\/CODE>.<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC17\" name=\"TOC17\" target=\"_blank\" rel=\"noopener\">Converting <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> files to <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> format.<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC18\" name=\"TOC18\" target=\"_blank\" rel=\"noopener\">Problems and bugs.<\/A> <\/LI><\/UL><br \/><FONT color=blue>\n<UL>\n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC1\" name=\"TOC1\" target=\"_blank\" rel=\"noopener\">\ubcf5\uc0ac \uc870\uac74<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC2\" name=\"TOC2\" target=\"_blank\" rel=\"noopener\">GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> \uc18c\uac1c<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC3\" name=\"TOC3\" target=\"_blank\" rel=\"noopener\">\ud568\uc218 \ubaa9\ub85d<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC4\" name=\"TOC4\" target=\"_blank\" rel=\"noopener\">\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc5f4\uae30<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC5\" name=\"TOC5\" target=\"_blank\" rel=\"noopener\">\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub2eb\uae30<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC6\" name=\"TOC6\" target=\"_blank\" rel=\"noopener\">\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \ub808\ucf54\ub4dc \ucd94\uac00\/\ub300\uccb4<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC7\" name=\"TOC7\" target=\"_blank\" rel=\"noopener\">\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \ub808\ucf54\ub4dc \ucc3e\uae30<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC8\" name=\"TOC8\" target=\"_blank\" rel=\"noopener\">\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \ub808\ucf54\ub4dc \uc0ad\uc81c\ud558\uae30<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC9\" name=\"TOC9\" target=\"_blank\" rel=\"noopener\">\ub808\ucf54\ub4dc\ub97c \uc21c\ucc28\uc801\uc73c\ub85c \uc811\uadfc\ud558\uae30<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC10\" name=\"TOC10\" target=\"_blank\" rel=\"noopener\">\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc7ac\uad6c\uc131<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC11\" name=\"TOC11\" target=\"_blank\" rel=\"noopener\">\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub3d9\uae30\ud654<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC12\" name=\"TOC12\" target=\"_blank\" rel=\"noopener\">\uc624\ub958 \ubb38\uc790\uc5f4<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC13\" name=\"TOC13\" target=\"_blank\" rel=\"noopener\">\uc635\uc158 \uc124\uc815\ud558\uae30<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC14\" name=\"TOC14\" target=\"_blank\" rel=\"noopener\">\ud30c\uc77c \uc7a0\uadf8\uae30<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC15\" name=\"TOC15\" target=\"_blank\" rel=\"noopener\">\ub450 \uc720\uc6a9\ud55c \ubcc0\uc218<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC16\" name=\"TOC16\" target=\"_blank\" rel=\"noopener\">\ud45c\uc900 <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE>, <CODE><FONT face=\uad74\ub9bc\uccb4>ndbm<\/FONT><\/CODE>\uacfc \ud638\ud658\uc131<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC17\" name=\"TOC17\" target=\"_blank\" rel=\"noopener\"><CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> \ud30c\uc77c\uc744 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \ud615\uc2dd\uc73c\ub85c \ubcc0\ud658\ud558\uae30<\/A> \n<LI><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#SEC18\" name=\"TOC18\" target=\"_blank\" rel=\"noopener\">\ubb38\uc81c\uc810\uacfc \ubc84\uadf8<\/A> <\/LI><\/UL><\/FONT>\n\n<HR>\n\n<P><!-- <H1><a target='_blank' class='con_link' NAME=\"SEC1\" HREF=\"gdbm.html#TOC1\" rel=\"noopener\">Copying Conditions.<\/A><\/H1> --><br \/><FONT color=blue>\n<H1><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#TOC1\" name=\"SEC1\" target=\"_blank\" rel=\"noopener\">\ubcf5\uc0ac \uc870\uac74<\/A><\/H1><\/FONT>\n<P>This library is <EM>free<\/EM>; this means that everyone is free to use it and free to redistribute it on a free basis. GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> (<CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>) is not in the public domain; it is copyrighted and there are restrictions on its distribution, but these restrictions are designed to permit everything that a good cooperating citizen would want to do. What is not allowed is to try to prevent others from further sharing any version of <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> that they might get from you. \n<P>Specifically, we want to make sure that you have the right to give away copies <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>, that you receive source code or else can get it if you want it, that you can change these functions or use pieces of them in new free programs, and that you know you can do these things. <br \/><FONT color=blue>\n<P>\uc774 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub294 <EM>\uc790\uc720\ub86d\ub2e4<\/EM>. \uc774\ub294 \uc544\ubb34\ub098 \uc0ac\uc6a9\ud560 \uc218 \uc788\uace0, \uc774 \uc870\uac74\ud558\uc5d0\uc11c \uc790\uc720\ub86d\uac8c \ubc30\ud3ec\ud560 \uc218 \uc788\ub2e4\ub294 \ub73b\uc774\ub2e4. GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> (<CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>)\ub294 \ud37c\ube14\ub9ad \ub3c4\uba54\uc778(public domain)\uc5d0 \uc788\uc9c0 \uc54a\ub2e4. (\uc989, \uc774\ub97c \uc0c1\uc5c5\uc801\uc778 \ubaa9\uc801\uc73c\ub85c \ubc30\ud0c0\uc801\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\ub2e4.) \uc774\ub294 \uc800\uc791\uad8c\uc73c\ub85c \ubcf4\ud638\ub418\uace0 \ubc30\ud3ec\ud558\ub294\ub370 \uc81c\ud55c\uc774 \uc788\ub2e4. \uadf8\ub7ec\ub098 \uc774 \uc81c\ud55c\uc740 \ud611\ub3d9\ud558\ub294 \uc88b\uc740 \ub124\ud2f0\uc98c\uc774 \ud558\ub824\ub294 \ubaa8\ub4e0 \uac83\uc744 \ud5c8\uc6a9\ud558\uae30 \uc704\ud574 \uc758\ub3c4\ub42c\ub2e4. \ud5c8\uc6a9\ub418\uc9c0 \uc54a\ub294 \uac83\uc740 \ub2e4\ub978 \uc0ac\ub78c\ub4e4\uacfc \ub354 \uc774\uc0c1 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>\uc744 \uacf5\uc720\ud558\uc9c0 \uc54a\uc73c\ub824 \ud558\ub294 \uac83\uc774\ub2e4. \n<P>\ub2f9\uc2e0\uc5d0\uac8c <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>\uc744 \ubc30\ud3ec\ud560 \uad8c\ub9ac\uc640 \uc6d0\ud55c\ub2e4\uba74 \uc18c\uc2a4\ucf54\ub4dc \ub4f1\uc744 \uc5bb\uc744 \uad8c\ub9ac\uac00 \uc788\uc74c\uc744 \uba85\ud655\ud788 \ud55c\ub2e4. \uadf8\ub798\uc11c \uae30\ub2a5\uc744 \uc218\uc815\ud558\uac70\ub098 \uc0c8\ub85c\uc6b4 \uc790\uc720 \uc18c\ud504\ud2b8\uc6e8\uc5b4\uc5d0\uc11c \ucf54\ub4dc\uc758 \uc77c\ubd80\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4\ub294 \uc810\uc744 \uc54c\uc544\uc57c \ud55c\ub2e4. <\/FONT>\n<P>To make sure that everyone has such rights, we have to forbid you to deprive anyone else of these rights. For example, if you distribute copies <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. \n<P>Also, for our own protection, we must make certain that everyone finds out that there is no warranty for anything in the <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> distribution. If these functions are modified by someone else and passed on, we want their recipients to know that what they have is not what we distributed, so that any problems introduced by others will not reflect on our reputation. <br \/><FONT color=blue>\n<P>\ubaa8\ub450\uc5d0\uac8c \uc774\ub7f0 \uad8c\ub9ac\uac00 \uc788\uae30 \ub54c\ubb38\uc5d0 \uc6b0\ub9ac\ub294 \ub2f9\uc2e0\uc774 \uadf8\ub4e4\uc5d0\uac8c\uc11c \uc774 \uad8c\ub9ac\ub97c \ube7c\uc558\ub294 \uac83\uc744 \uae08\uc9c0\ud55c\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \ub2f9\uc2e0\uc774 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>\uc744 \ubc30\ud3ec\ud55c\ub2e4\uba74 \ub2f9\uc2e0\uc774 \uac00\uc9c4 \uad8c\ub9ac\ub3c4 \uc918\uc57c\ud55c\ub2e4. \ub610 \uadf8\ub4e4\uc774 \uc18c\uc2a4\ucf54\ub4dc\ub97c \uc5bb\uc744 \uc218 \uc788\ub2e4\ub294 \uac83\ub3c4 \uc54c\ub824\uc57c\ud55c\ub2e4. \uadf8\ub4e4\uc5d0\uac8c \uadf8\ub4e4\uc758 \uad8c\ub9ac\ub97c \ub9d0\ud574\uc918\uc57c \ud55c\ub2e4. \n<P>\ub610\ud55c \uc6b0\ub9ac\ub294 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \ubc30\ud3ec\ub97c \ubcf4\uc7a5\ud558\uc9c0 \uc54a\ub294\ub2e4\ub294 \uc810\ub3c4 \ud655\uc2e4\ud788 \ud55c\ub2e4. \uc5b4\ub5a4 \uc0ac\ub78c\uc774 \uae30\ub2a5\uc744 \uc218\uc815\ud558\uc600\ub2e4\uba74 \uc6b0\ub9ac\uac00 \uc6d0\ub798 \ubc30\ud3ec\ud55c \uac83\uc774 \uc544\ub2d8\uc744 \uc54c\ub824\uc11c, \ub2e4\ub978 \uc0ac\ub78c\uc774 \ub9cc\ub4e0 \ubb38\uc81c\ub85c \uc6b0\ub9ac \uba85\uc131\uc5d0 \uc601\ud5a5\uc774 \uc5c6\uc5b4\uc57c \ud55c\ub2e4. <\/FONT>\n<P><CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> is currently distributed under the terms of the GNU General Public License, Version 2. (<EM>NOT<\/EM> under the GNU General Library Public License.) A copy the GNU General Public License is included with the distribution of <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>. <br \/><FONT color=blue>\n<P><CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>\uc740 \ud604\uc7ac (GNU General Library Public License\uac00 \uc544\ub2c8\ub77c) GNU General Public License, Version 2\ub85c \ubc30\ud3ec\ub41c\ub2e4. GNU General Public License\uc758 \ubcf5\uc0ac\ubcf8\uc740 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>\uc5d0 \ud3ec\ud568\ub418\uc788\ub2e4. (\uc5ed\uc8fc; \uc989, \uc0c1\uc5c5\uc801 \ubaa9\uc801\uc758 \uc18c\ud504\ud2b8\uc6e8\uc5b4\uc5d0\uc11c <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\ub2e4.) <\/FONT><!-- <H1><a target='_blank' class='con_link' NAME=\"SEC2\" HREF=\"gdbm.html#TOC2\" rel=\"noopener\">Introduction to GNU <CODE>dbm<\/CODE>.<\/A><\/H1> --><br \/><FONT color=blue>\n<H1><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#TOC2\" name=\"SEC2\" target=\"_blank\" rel=\"noopener\">GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> \uc18c\uac1c<\/A><\/H1><\/FONT>\n<P>GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> (<CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>)is a library of database functions that use extendible hashing and works similar to the standard UNIX <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> functions. These routines are provided to a programmer needing to create and manipulate a hashed database. (<CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> is <EM>NOT<\/EM> a complete database package for an end user.) \n<P>The basic use of <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> is to store key\/data pairs in a data file. Each key must be unique and each key is paired with only one data item. The keys can not be directly accessed in sorted order. The basic unit of data in <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> is the structure: <PRE> typedef struct { char *dptr; int dsize; } datum; <\/PRE><br \/><FONT color=blue>\n<P>GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE>(<CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>)\uc740 \ud655\uc7a5\uac00\ub2a5\ud55c \ud574\uc26c\ub97c \uc0ac\uc6a9\ud55c \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud568\uc218 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub85c, \ud45c\uc900 \uc720\ub2c9\uc2a4 <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> \ud568\uc218\uc640 \ube44\uc2b7\ud558\uac8c \ub3d9\uc791\ud55c\ub2e4. \uc774 \ud568\uc218\ub4e4\ub85c \ud574\uc26c\ub41c \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ub9cc\ub4e4\uace0 \ub2e4\ub8f0 \uc218 \uc788\ub2e4. (<CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE>\uc740 \uc77c\ubc18 \uc0ac\uc6a9\uc790\ub97c \uc704\ud55c \uc644\uc804\ud55c \ub370\uc774\ud14c\ubca0\uc774\uc2a4\uac00 <EM>\uc544\ub2c8\ub2e4<\/EM>.) \n<P><CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>\uc740 \uae30\ubcf8\uc801\uc73c\ub85c \uc790\ub8cc \ud30c\uc77c\uc5d0 \ud0a4\uc640 \uc790\ub8cc\uc758 \uc30d\uc744 \uc800\uc7a5\ud55c\ub2e4. \uac01 \ud0a4\ub294 \uc911\ubcf5\ub418\uba74 \uc548\ub418\uace0, \uc624\uc9c1 \ud558\ub098\uc758 \uc790\ub8cc\ub97c \uac00\uc9c4\ub2e4. \ud0a4\ub294 \uc815\ub82c\ub41c \uc21c\uc11c\ub85c \uc9c1\uc811 \uc811\uadfc\ud560 \uc218 \uc5c6\ub2e4. <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>\uc758 (\ud0a4\uc640 \uc790\ub8cc\uc758) \uae30\ubcf8 \uc790\ub8cc\uad6c\uc870\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4. <PRE> typedef struct { char *dptr; int dsize; } datum; <\/PRE><\/FONT>\n<P>This structure allows for arbitrary sized keys and data items. \n<P>The key\/data pairs are stored in a <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> disk file, called a <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> database. An application must open a <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> database to be able manipulate the keys and data contained in the database. <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> allows an application to have multiple databases open at the same time. When an application opens a <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> database, it is designated as a <CODE><FONT face=\uad74\ub9bc\uccb4>reader<\/FONT><\/CODE> or a <CODE><FONT face=\uad74\ub9bc\uccb4>writer<\/FONT><\/CODE>. A <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> database opened by at most one writer at a time. However, many readers may open the database open simultaneously. Readers and writers can not open the <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> database at the same time. <br \/><FONT color=blue>\n<P>\uc774 \uad6c\uc870\uccb4\ub294 \uc5b4\ub5a4 \ud06c\uae30\uc758 \ud0a4\uc640 \uc790\ub8cc\ub3c4 \ub2f4\uc744 \uc218 \uc788\ub2e4. \n<P>\ud0a4\uc640 \uc790\ub8cc \uc30d\uc740 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub77c\uace0 \ubd80\ub974\ub294 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \uc790\ub8cc \ud30c\uc77c\uc5d0 \uc800\uc7a5\ub41c\ub2e4. \ud504\ub85c\uadf8\ub7a8\uc740 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc800\uc7a5\ub41c \ud0a4\uc640 \uc790\ub8cc\ub97c \ub2e4\ub8e8\uae30 \uc704\ud574\uc11c <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc5f4\uc5b4\uc57c \ud55c\ub2e4. <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>\uc5d0\uc11c \ud504\ub85c\uadf8\ub7a8\uc740 \ub3d9\uc2dc\uc5d0 \uc5ec\ub7ec \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc5f4 \uc218 \uc788\ub2e4. \ud504\ub85c\uadf8\ub7a8\uc774 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc5f4\uba74, <CODE><FONT face=\uad74\ub9bc\uccb4>\ub3c5\uc790(reader)<\/FONT><\/CODE>\ub098 <CODE><FONT face=\uad74\ub9bc\uccb4>\ud544\uc790(writer)<\/FONT><\/CODE>\ub85c \ud589\ub3d9\ud55c\ub2e4. <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub294 \ub3d9\uc2dc\uc5d0 \ucd5c\ub300 \ud55c \ud544\uc790\ub9cc\uc774 \uc5f4 \uc218 \uc788\uc9c0\ub9cc, \ub3c5\uc790\uc758 \uacbd\uc6b0 \uc5ec\ub7ec \ub3c5\uc790\uac00 \ub3d9\uc2dc\uc5d0 \ud55c \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc5f4 \uc218 \uc788\ub2e4. \ub3c5\uc790\uc640 \ud544\uc790\ub294 \ub3d9\uc2dc\uc5d0 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc5f4 \uc218 \uc5c6\ub2e4. <\/FONT><!-- <H1><a target='_blank' class='con_link' NAME=\"SEC3\" HREF=\"gdbm.html#TOC3\" rel=\"noopener\">List of functions.<\/A><\/H1> --><br \/><FONT color=blue>\n<H1><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#TOC3\" name=\"SEC3\" target=\"_blank\" rel=\"noopener\">\ud568\uc218 \ubaa9\ub85d<\/A><\/H1><\/FONT>\n<P>The following is a quick list of the functions contained in the <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> library. The include file <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm.h<\/FONT><\/CODE>, that can be included by the user, contains a definition of these functions. <PRE>#include &lt;gdbm.h&gt; GDBM_FILE gdbm_open(name, block_size, flags, mode, fatal_func); void gdbm_close(dbf); int gdbm_store(dbf, key, content, flag); datum gdbm_fetch(dbf, key); int gdbm_delete(dbf, key); datum gdbm_firstkey(dbf); datum gdbm_nextkey(dbf, key); int gdbm_reorganize(dbf); void gdbm_sync(dbf); int gdbm_exists(dbf, key); char *gdbm_strerror(errno); int gdbm_setopt(dbf, option, value, size); int gdbm_fdesc(dbf); <\/PRE><br \/><FONT color=blue>\n<P>\ub2e4\uc74c\uc740 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0 \ud3ec\ud568\ub41c \ud568\uc218\ub4e4\uc774\ub2e4. \ud5e4\ub354 \ud30c\uc77c <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm.h<\/FONT><\/CODE>\uc5d0 \uc774 \ud568\uc218\ub4e4\uc774 \uc120\uc5b8\ub418\uc788\ub2e4. <PRE>#include &lt;gdbm.h&gt; GDBM_FILE gdbm_open(name, block_size, flags, mode, fatal_func); void gdbm_close(dbf); int gdbm_store(dbf, key, content, flag); datum gdbm_fetch(dbf, key); int gdbm_delete(dbf, key); datum gdbm_firstkey(dbf); datum gdbm_nextkey(dbf, key); int gdbm_reorganize(dbf); void gdbm_sync(dbf); int gdbm_exists(dbf, key); char *gdbm_strerror(errno); int gdbm_setopt(dbf, option, value, size); int gdbm_fdesc(dbf); <\/PRE><\/FONT>\n<P>The <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm.h<\/FONT><\/CODE> include file is often in the <TT><FONT face=\uad74\ub9bc\uccb4>`\/usr\/local\/include'<\/FONT><\/TT> directory. (The actual location of <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm.h<\/FONT><\/CODE> depends on your local installation of <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>.) <br \/><FONT color=blue>\ud5e4\ub354 \ud30c\uc77c <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm.h<\/FONT><\/CODE>\ub294 \ubcf4\ud1b5 <TT><FONT face=\uad74\ub9bc\uccb4>`\/usr\/local\/include'<\/FONT><\/TT>\uc5d0 \uc788\ub2e4. (<CODE><FONT face=\uad74\ub9bc\uccb4>gdbm.h<\/FONT><\/CODE>\uc758 \uc2e4\uc81c \uc704\uce58\ub294 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>\uc744 \uad6c\uc131\ud55c \ubc29\ubc95\uc5d0 \ub530\ub77c \ub2e4\ub974\ub2e4.) <\/FONT><!-- <H1><a target='_blank' class='con_link' NAME=\"SEC4\" HREF=\"gdbm.html#TOC4\" rel=\"noopener\">Opening the database.<\/A><\/H1> --><br \/><FONT color=blue>\n<H1><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#TOC4\" name=\"SEC4\" target=\"_blank\" rel=\"noopener\">\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc5f4\uae30<\/A><\/H1><\/FONT>\n<P>Initialize <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> system. If the file has a size of zero bytes, a file initialization procedure is performed, setting up the initial structure in the file. \n<P>The procedure for opening a <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> file is: <PRE>GDBM_FILE dbf; dbf = gdbm_open(name, block_size, flags, mode, fatal_func); <\/PRE><br \/><FONT color=blue>\n<P><CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \uc2dc\uc2a4\ud15c\uc744 \ucd08\uae30\ud654\ud55c\ub2e4. \ud30c\uc77c\uc758 \ud06c\uae30\uac00 0\uc774\ub77c\uba74 \ud30c\uc77c\uc5d0 \ucd08\uae30 \uad6c\uc870\ub97c \ub9cc\ub4dc\ub294 \ud30c\uc77c \ucd08\uae30\ud654 \uacfc\uc815\uc774 \uc218\ud589\ub41c\ub2e4. \n<P><CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \ud30c\uc77c\uc744 \uc5ec\ub294 \ud568\uc218\ub294, <PRE>GDBM_FILE dbf; dbf = gdbm_open(name, block_size, flags, mode, fatal_func); <\/PRE><\/FONT>\n<P>The parameters are: <br \/><FONT color=blue>\n<P>\ud30c\ub77c\ubbf8\ud130\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4. <\/FONT>\n<DL compact>\n<DT>char *name \n<DD>The name of the file (the complete name, <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> does not append any characters to this name). <br \/><FONT color=blue>\ud30c\uc77c\uba85. (\uc644\uc804\ud55c \uc774\ub984, <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>\uc740 \uc774 \uc774\ub984\uc5d0 \uc5b4\ub5a4 \ubb38\uc790\ub3c4 \ucd94\uac00\ud558\uc9c0 \uc54a\ub294\ub2e4.) <\/FONT>\n<DT>int block_size \n<DD>It is used during initialization to determine the size of various constructs. It is the size of a single transfer from disk to memory. This parameter is ignored if the file has been previously initialized. The minimum size is 512. If the value is less than 512, the file system blocksize is used, otherwise the value of <CODE><FONT face=\uad74\ub9bc\uccb4>block_size<\/FONT><\/CODE> is used. <br \/><FONT color=blue>\ucd08\uae30\ud654\uc2dc \uc5ec\ub7ec \uad6c\uc870\uc758 \ud06c\uae30\ub97c \ud310\ub2e8\ud560 \ub54c \uc0ac\uc6a9\ud55c\ub2e4. \uc774\ub294 \ub514\uc2a4\ud06c\uc5d0\uc11c \uba54\ubaa8\ub9ac\ub85c \ud55c\ubc88\uc5d0 \uc62e\uae38 \uc218 \uc788\ub294 \ud06c\uae30\uc774\ub2e4. \ud30c\uc77c\uc774 \uc774\ubbf8 \ucd08\uae30\ud654\ub418\uc5c8\ub2e4\uba74, \uc774 \ud30c\ub77c\ubbf8\ud130\ub294 \ubb34\uc2dc\ub41c\ub2e4. \ucd5c\uc18c\uac12\uc740 512\uc774\ub2e4. 512 \ubcf4\ub2e4 \uc791\ub2e4\uba74 \ub300\uc2e0 \ud30c\uc77c\uc2dc\uc2a4\ud15c \ube14\ub7ed\ud06c\uae30\uac00 \uc0ac\uc6a9\ub41c\ub2e4. <\/FONT>\n<DT>int flags \n<DD>If <CODE><FONT face=\uad74\ub9bc\uccb4>flags<\/FONT><\/CODE> is set to GDBM_READER, the user wants to just read the database and any call to <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_store<\/FONT><\/CODE> or <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_delete<\/FONT><\/CODE> will fail. Many readers can access the database at the same time. If <CODE><FONT face=\uad74\ub9bc\uccb4>flags<\/FONT><\/CODE> is set to GDBM_WRITER, the user wants both read and write access to the database and requires exclusive access. If <CODE><FONT face=\uad74\ub9bc\uccb4>flags<\/FONT><\/CODE> is set to GDBM_WRCREAT, the user wants both read and write access to the database and if the database does not exist, create a new one. If <CODE><FONT face=\uad74\ub9bc\uccb4>flags<\/FONT><\/CODE> is set to GDBM_NEWDB, the user want a new database created, regardless of whether one existed, and wants read and write access to the new database. The following may also be logically or'd into the database flags: GDBM_SYNC, which causes all database operations to be synchronized to the disk, and GDBM_NOLOCK, which prevents the library from performing any locking on the database file. The option GDBM_FAST is now obsolete, since <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> defaults to no-sync mode. Any error detected will cause a return value of NULL and an appropriate value will be in <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_errno<\/FONT><\/CODE> (see Variables). If no errors occur, a pointer to the <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> file descriptor will be returned. <br \/><FONT color=blue><CODE><FONT face=\uad74\ub9bc\uccb4>flags<\/FONT><\/CODE>\uac00 GDBM_READER\ub77c\uba74 \uc0ac\uc6a9\uc790\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc77d\uae30\ub9cc \ud55c\ub2e4. <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_store<\/FONT><\/CODE>\ub098 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_delete<\/FONT><\/CODE> \ud568\uc218\ub294 \uc2e4\ud328\ud55c\ub2e4. \ub3d9\uc2dc\uc5d0 \ub9ce\uc740 \ub3c5\uc790\uac00 \ub370\uc774\ud14c\ubca0\uc774\uc2a4\uc5d0 \uc811\uadfc\ud560 \uc218 \uc788\ub2e4. <CODE><FONT face=\uad74\ub9bc\uccb4>flags<\/FONT><\/CODE>\uac00 GDBM_WRITER\ub77c\uba74 \uc0ac\uc6a9\uc790\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc77d\uace0 \uc4f8 \uc218 \uc788\ub2e4. \uadf8\ub7ec\uba74 \ub2e4\ub978 \uac83\ub4e4\uc740 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc811\uadfc\ud560 \uc218 \uc5c6\uac8c \ub41c\ub2e4. <CODE><FONT face=\uad74\ub9bc\uccb4>flags<\/FONT><\/CODE>\uac00 GDBM_WRCREAT\uc774\uba74 \uc0ac\uc6a9\uc790\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc77d\uace0 \uc4f8 \uc218 \uc788\uace0, \ub9cc\uc57d \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \uc5c6\ub2e4\uba74 \uc0c8\ub85c \ub9cc\ub4e0\ub2e4. <CODE><FONT face=\uad74\ub9bc\uccb4>flags<\/FONT><\/CODE>\uac00 GDBM_NEWDB\ub77c\uba74 \uc0ac\uc6a9\uc790\ub294 \uc774\ubbf8 \uc788\ub354\ub77c\ub3c4 \uc0c8\ub86d\uac8c \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ub9cc\ub4e4\uace0, \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc77d\uace0 \uc4f8 \uc218 \uc788\ub2e4. \ub2e4\uc74c\uc740 \uc704\uc758 \uac12\ub4e4\uacfc \ub17c\ub9ac\ud569(OR)\uc744 \ud560 \uc218 \uc788\ub2e4. GDBM_SYNC\ub294 \ubaa8\ub4e0 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc791\uc5c5\uc744 \ub514\uc2a4\ud06c\uacfc \ub3d9\uae30\ud654\ud55c\ub2e4. GDBM_NOLOCK\uc740 \ub77c\uc774\ube0c\ub7ec\ub9ac\uac00 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud30c\uc77c\uc744 \uc7a0\uadf8\uc9c0 \uc54a\uac8c \ud55c\ub2e4. GDBM_FAST\ub294 \ub3d9\uae30\ud654\ud558\uc9c0 \uc54a\ub294 \uac83\uc774 \uae30\ubcf8 \ud589\ub3d9\uc774\uae30 \ub54c\ubb38\uc5d0 \uc9c0\uae08\uc740 \uc0ac\uc6a9\ub418\uc9c0 \uc54a\ub294\ub2e4. \uc5b4\ub5a4 \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uba74 NULL\uc744 \ubc18\ud658\ud558\uace0, \uc801\uc808\ud55c \uac12\uc774 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_errno<\/FONT><\/CODE>\uc5d0 \uc800\uc7a5\ub41c\ub2e4. (\"\ub450 \uc720\uc6a9\ud55c \ubcc0\uc218\" \ucc38\uace0) \uc624\ub958\uac00 \uc5c6\ub2e4\uba74 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \ud30c\uc77c\uae30\uc220\uc790\uc758 \ud3ec\uc778\ud130\uac00 \ubc18\ud658\ub41c\ub2e4. <\/FONT>\n<DT>int mode \n<DD>File mode (see chmod(2) and open(2) if the file is created). <br \/><FONT color=blue>\ud30c\uc77c \ubaa8\ub4dc. (\ud30c\uc77c\uc774 \uc0dd\uc131\ub420 \ub54c \uc0ac\uc6a9\ub41c\ub2e4. chmod(2)\uc640 open(2) \ucc38\uace0) <\/FONT>\n<DT>void (*fatal_func) () \n<DD>A function for <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> to call if it detects a fatal error. The only parameter of this function is a string. If the value of NULL is provided, <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> will use a default function. <br \/><FONT color=blue>\uc2ec\uac01\ud55c \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc744 \ub54c \ud638\ucd9c\ud558\ub294 \ud568\uc218. \uc774 \ud568\uc218\ub294 \ubb38\uc790\uc5f4\uc758 \ud55c \uc544\uaddc\uba3c\ud2b8\ub97c \ubc1b\ub294\ub2e4. NULL\uc744 \uc0ac\uc6a9\ud558\uba74 \uae30\ubcf8 \ud568\uc218\uac00 \uc0ac\uc6a9\ub41c\ub2e4. (\uc5ed\uc8fc; \uae30\ubcf8 \ud568\uc218\ub294 \"gdbm fatal: \" \ub4a4\uc5d0 \ubb38\uc790\uc5f4\uc744 \ucd9c\ub825\ud558\uace0 \uc904\ubc14\uafc8\uc744 \ud55c\ub2e4.) <\/FONT><\/DD><\/DL>\n<P>The return value, <CODE><FONT face=\uad74\ub9bc\uccb4>dbf<\/FONT><\/CODE>, is the pointer needed by all other functions to access that <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> file. If the return is the NULL pointer, <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE> was not successful. The errors can be found in <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_errno<\/FONT><\/CODE> for <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> errors and in <CODE><FONT face=\uad74\ub9bc\uccb4>errno<\/FONT><\/CODE> for file system errors (for error codes, see <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm.h<\/FONT><\/CODE>). \n<P>In all of the following calls, the parameter <CODE><FONT face=\uad74\ub9bc\uccb4>dbf<\/FONT><\/CODE> refers to the pointer returned from <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>. <br \/><FONT color=blue>\n<P>\ubc18\ud658\uac12 <CODE><FONT face=\uad74\ub9bc\uccb4>dbf<\/FONT><\/CODE>\ub294 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \ud30c\uc77c\uc744 \uc811\uadfc\ud558\ub294 \ub2e4\ub978 \ubaa8\ub4e0 \ud568\uc218\ub4e4\uc774 \ud544\uc694\ub85c\ud558\ub294 \ud3ec\uc778\ud130\uc774\ub2e4. NULL \ud3ec\uc778\ud130\ub97c \ubc18\ud658\ud558\uba74, <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>\uc740 \uc131\uacf5\ud558\uc9c0 \ubabb\ud55c \uac83\uc774\ub2e4. <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \uc624\ub958\ub294 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_errno<\/FONT><\/CODE>, \ud30c\uc77c\uc2dc\uc2a4\ud15c \uc624\ub958\ub294 <CODE><FONT face=\uad74\ub9bc\uccb4>errno<\/FONT><\/CODE>\uc5d0\uc11c \ucc3e\uc744 \uc218 \uc788\ub2e4. (\uc624\ub958 \ucf54\ub4dc\ub294 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm.h<\/FONT><\/CODE>\ub97c \ucc38\uace0\ud558\ub77c.) \n<P>\ub2e4\uc74c \ubaa8\ub4e0 \ud568\uc218\uc5d0\uc11c \ud30c\ub77c\ubbf8\ud130 <CODE><FONT face=\uad74\ub9bc\uccb4>dbf<\/FONT><\/CODE>\ub294 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>\uc774 \ubc18\ud658\ud55c \ud3ec\uc778\ud130\uc774\ub2e4. <\/FONT><!-- <H1><a target='_blank' class='con_link' NAME=\"SEC5\" HREF=\"gdbm.html#TOC5\" rel=\"noopener\">Closing the database.<\/A><\/H1> --><br \/><FONT color=blue>\n<H1><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#TOC5\" name=\"SEC5\" target=\"_blank\" rel=\"noopener\">\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub2eb\uae30<\/A><\/H1><\/FONT>\n<P>It is important that every file opened is also closed. This is needed to update the reader\/writer count on the file. This is done by: <PRE>gdbm_close(dbf); <\/PRE><br \/><FONT color=blue>\n<P>\ud55c\ubc88 \uc5f4\uc5c8\ub358 \ud30c\uc77c\uc744 \ub2eb\ub294 \uac83\uc740 \uc911\uc694\ud558\ub2e4. \ub2eb\uae30\ub294 \ud30c\uc77c\uc5d0 \ubcc0\uacbd\ub41c \ub3c5\uc790\uc640 \ud544\uc790 \uc218\ub97c \ubc18\uc601\ud558\uae30 \uc704\ud574 \ud544\uc694\ud558\ub2e4. \ub2eb\uae30\ub294 \ub2e4\uc74c \ud568\uc218\ub85c \ud55c\ub2e4. <PRE>gdbm_close(dbf); <\/PRE><\/FONT>\n<P>The parameter is: <br \/><FONT color=blue>\n<P>\ud30c\ub77c\ubbf8\ud130\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4. <\/FONT>\n<DL compact>\n<DT>GDBM_FILE dbf \n<DD>The pointer returned by <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>. <br \/><FONT color=blue><CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>\uc774 \ubc18\ud658\ud55c \ud3ec\uc778\ud130. <\/FONT><\/DD><\/DL>\n<P>Closes the <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> file and frees all memory associated with the file <CODE><FONT face=\uad74\ub9bc\uccb4>dbf<\/FONT><\/CODE>. <br \/><FONT color=blue>\uc774 \ud568\uc218\ub294 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \ud30c\uc77c\uc744 \ub2eb\uace0, <CODE><FONT face=\uad74\ub9bc\uccb4>dbf<\/FONT><\/CODE> \ud30c\uc77c\uacfc \uc5f0\uad00\ub41c \ubaa8\ub4e0 \uba54\ubaa8\ub9ac\ub97c \ubc18\ud658\ud55c\ub2e4. <\/FONT><!-- <H1><a target='_blank' class='con_link' NAME=\"SEC6\" HREF=\"gdbm.html#TOC6\" rel=\"noopener\">Inserting and replacing records in the database.<\/A><\/H1> --><br \/><FONT color=blue>\n<H1><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#TOC6\" name=\"SEC6\" target=\"_blank\" rel=\"noopener\">\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \ub808\ucf54\ub4dc \ucd94\uac00\/\ub300\uccb4<\/A><\/H1><\/FONT>\n<P>The function <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_store<\/FONT><\/CODE> inserts or replaces records in the database. <PRE>ret = gdbm_store(dbf, key, content, flag); <\/PRE><br \/><FONT color=blue>\n<P>\ud568\uc218 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_store<\/FONT><\/CODE>\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \ub808\ucf54\ub4dc\ub97c \ucd94\uac00\ud558\uac70\ub098 \ub300\uccb4\ud55c\ub2e4. <PRE>ret = gdbm_store(dbf, key, content, flag); <\/PRE><\/FONT>\n<P>The parameters are: <br \/><FONT color=blue>\ud30c\ub77c\ubbf8\ud130\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4. <\/FONT>\n<DL compact>\n<DT>GDBM_FILE dbf \n<DD>The pointer returned by <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>. <br \/><FONT color=blue><CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>\uc774 \ubc18\ud658\ud55c \ud3ec\uc778\ud130. <\/FONT>\n<DT>datum key \n<DD>The <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE> data. <br \/><FONT color=blue>\ud0a4. <\/FONT>\n<DT>datum content \n<DD>The data to be associated with the key. <br \/><FONT color=blue>\ud0a4\uc640 \uc5f0\uacb0\ub41c \uc790\ub8cc. <\/FONT>\n<DT>int flag \n<DD>Defines the action to take when the key is already in the database. The value GDBM_REPLACE (defined in <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm.h<\/FONT><\/CODE>) asks that the old data be replaced by the new <CODE><FONT face=\uad74\ub9bc\uccb4>content<\/FONT><\/CODE>. The value GDBM_INSERT asks that an error be returned and no action taken if the <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE> already exists. <br \/><FONT color=blue>\ud0a4\uac00 \uc774\ubbf8 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc788\uc744 \ub54c \ucde8\ud560 \ud589\ub3d9\uc744 \uacb0\uc815\ud55c\ub2e4. (<CODE><FONT face=\uad74\ub9bc\uccb4>gdbm.h<\/FONT><\/CODE>\uc5d0 \uc815\uc758\ub41c) GDBM_REPLACE\ub97c \uc0ac\uc6a9\ud558\uba74 \uc0c8\ub85c\uc6b4 <CODE><FONT face=\uad74\ub9bc\uccb4>content<\/FONT><\/CODE>\ub85c \uc804\uc758 \uc790\ub8cc\ub97c \ub300\uccb4\ud55c\ub2e4. GDBM_INSERT\ub97c \uc0ac\uc6a9\ud558\uba74 \uc774\ubbf8 <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE>\uac00 \uc788\ub294 \uacbd\uc6b0 \uc624\ub958\ub97c \ubc1c\uc0dd\ud558\uace0 \uc544\ubb34 \uc77c\ub3c4 \ud558\uc9c0 \uc54a\ub294\ub2e4. <\/FONT><\/DD><\/DL>\n<P>The values returned in <CODE><FONT face=\uad74\ub9bc\uccb4>ret<\/FONT><\/CODE> are: <br \/><FONT color=blue>\ubc18\ud658\uac12 <CODE><FONT face=\uad74\ub9bc\uccb4>ret<\/FONT><\/CODE>\ub294, <\/FONT>\n<DL compact>\n<DT>-1 \n<DD>The item was not stored in the database because the caller was not an official writer or either <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE> or <CODE><FONT face=\uad74\ub9bc\uccb4>content<\/FONT><\/CODE> have a NULL dptr field. Both <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE> and <CODE><FONT face=\uad74\ub9bc\uccb4>content<\/FONT><\/CODE> must have the dptr field be a non-NULL value. Since a NULL dptr field is used by other functions to indicate an error, a NULL field cannot be valid data. <br \/><FONT color=blue>\ud568\uc218\ub97c \ubd80\ub978 \uc0ac\ub78c\uc774 \uacf5\uc2dd \uc800\uc790\uac00 \uc544\ub2c8\uac70\ub098 <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE>\ub098 <CODE><FONT face=\uad74\ub9bc\uccb4>content<\/FONT><\/CODE> \uad6c\uc870\uccb4\uc758 dptr \uba64\ubc84\uac00 NULL\uc774\uae30 \ub54c\ubb38\uc5d0 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc800\uc7a5\ud560 \uc218 \uc5c6\ub2e4. <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE>\uc640 <CODE><FONT face=\uad74\ub9bc\uccb4>content<\/FONT><\/CODE> \uad6c\uc870\uccb4\uc758 dptr \uba64\ubc84\ub294 NULL\uc774 \uc544\ub2cc \uac12\uc744 \uac00\uc838\uc57c\ud55c\ub2e4. dptr \uac12\uc774 NULL\uc778 \uac83\uc740 \ub2e4\ub978 \ud568\uc218\uc5d0\uc11c \uc624\ub958\ub97c \uc758\ubbf8\ud558\uae30 \ub54c\ubb38\uc5d0 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\ub2e4. <\/FONT>\n<DT>+1 \n<DD>The item was not stored because the argument <CODE><FONT face=\uad74\ub9bc\uccb4>flag<\/FONT><\/CODE> was GDBM_INSERT and the <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE> was already in the database. <br \/><FONT color=blue><CODE><FONT face=\uad74\ub9bc\uccb4>flag<\/FONT><\/CODE>\uac00 GDBM_INSERT\uc774\uace0 <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE>\uac00 \uc774\ubbf8 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc788\uae30 \ub54c\ubb38\uc5d0 \ubca0\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc800\uc7a5\ud560 \uc218 \uc5c6\ub2e4. <\/FONT>\n<DT>0 \n<DD>No error. <CODE><FONT face=\uad74\ub9bc\uccb4>content<\/FONT><\/CODE> is keyed by <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE>. The file on disk is updated to reflect the structure of the new database before returning from this function. <br \/><FONT color=blue>\uc624\ub958 \uc5c6\uc74c. <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE>\ub97c \ud0a4\ub85c \ud558\uc5ec <CODE><FONT face=\uad74\ub9bc\uccb4>content<\/FONT><\/CODE>\uac00 \uc800\uc7a5\ub418\uc5c8\ub2e4. \uc774 \ud568\uc218\uac00 \ubc18\ud658\ud558\uae30 \uc804\uc5d0, \ub514\uc2a4\ud06c\uc758 \ud30c\uc77c\uc740 \uc0c8\ub85c\uc6b4 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uad6c\uc870\ub97c \ubc18\uc601\ud558\uae30 \uc704\ud574 \uac31\uc2e0\ub41c\ub2e4. <\/FONT><\/DD><\/DL>\n<P>If you store data for a <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE> that is already in the data base, <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> replaces the old data with the new data if called with GDBM_REPLACE. You do not get two data items for the same <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE> and you do not get an error from <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_store<\/FONT><\/CODE>. \n<P>The size in <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> is not restricted like <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> or <CODE><FONT face=\uad74\ub9bc\uccb4>ndbm<\/FONT><\/CODE>. Your data can be as large as you want. <br \/><FONT color=blue>\n<P>\uc774\ubbf8 \uc788\ub294 <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE>\ub85c \uc790\ub8cc\ub97c \uc800\uc7a5\ud558\ub824\ud560 \ub54c, GDBM_REPLACE\ub97c \uc0ac\uc6a9\ud55c \uacbd\uc6b0 \uc0c8\ub85c\uc6b4 \uc790\ub8cc\ub85c \uae30\uc874\uc758 \uc790\ub8cc\ub97c \ub300\uccb4\ud55c\ub2e4. \uc774 \uacbd\uc6b0 \uac19\uc740 <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE>\uc5d0 \ub450 \uc790\ub8cc\uac00 \uc800\uc7a5\ub418\uc9c0 \uc54a\uace0, \ubb38\uc81c\uc5c6\uc774 \uc2e4\ud589\ub41c\ub2e4. \n<P><CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>\uc5d0\uc11c \ud06c\uae30\ub294 <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE>\ub098 <CODE><FONT face=\uad74\ub9bc\uccb4>ndbm<\/FONT><\/CODE>\uacfc \uac19\uc774 \uc81c\ud55c\ub418\uc9c0 \uc54a\ub294\ub2e4. \uc790\ub8cc\ub294 \uc6d0\ud558\ub294 \ub9cc\ud07c \ucee4\uc9c8 \uc218 \uc788\ub2e4. <\/FONT><!-- <H1><a target='_blank' class='con_link' NAME=\"SEC7\" HREF=\"gdbm.html#TOC7\" rel=\"noopener\">Searching for records in the database.<\/A><\/H1> --><br \/><FONT color=blue>\n<H1><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#TOC7\" name=\"SEC7\" target=\"_blank\" rel=\"noopener\">\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \ub808\ucf54\ub4dc \ucc3e\uae30<\/A><\/H1><\/FONT>\n<P>Looks up a given <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE> and returns the information associated with that key. The pointer in the structure that is returned is a pointer to dynamically allocated memory block. To search for some data: <PRE>content = gdbm_fetch(dbf, key); <\/PRE><br \/><FONT color=blue>\n<P>\uc8fc\uc5b4\uc9c4 <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE>\ub97c \ucc3e\uace0, \uadf8 \ud0a4\uc640 \uc5f0\uacb0\ub41c \uc790\ub8cc\ub97c \ubc18\ud658\ud55c\ub2e4. \ubc18\ud658\ub418\ub294 \uad6c\uc870\uccb4\uc758 \ud3ec\uc778\ud130\ub294 \ub3d9\uc801\uc73c\ub85c \ud560\ub2f9\ub41c \uba54\ubaa8\ub9ac\ub97c \uac00\ub9ac\ud0a8\ub2e4. \uc790\ub8cc\ub97c \ucc3e\uae30 \uc704\ud574\uc11c \ub2e4\uc74c \ud568\uc218\ub97c \uc0ac\uc6a9\ud55c\ub2e4. <PRE>content = gdbm_fetch(dbf, key); <\/PRE><\/FONT>\n<P>The parameters are: <br \/><FONT color=blue>\ud30c\ub77c\ubbf8\ud130\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4. <\/FONT>\n<DL compact>\n<DT>GDBM_FILE dbf \n<DD>The pointer returned by <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>. <br \/><FONT color=blue><CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>\uc774 \ubc18\ud658\ud55c \ud3ec\uc778\ud130. <\/FONT>\n<DT>datum key \n<DD>The <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE> data. <br \/><FONT color=blue>\ud0a4. <\/FONT><\/DD><\/DL>\n<P>The datum returned in <CODE><FONT face=\uad74\ub9bc\uccb4>content<\/FONT><\/CODE> is a pointer to the data found. If the dptr is NULL, no data was found. If dptr is not NULL, then it points to data allocated by malloc. <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> does not automatically free this data. The user must free this storage when done using it. This eliminates the need to copy the result to save it for later use (you just save the pointer). <br \/><FONT color=blue>\n<P><CODE><FONT face=\uad74\ub9bc\uccb4>content<\/FONT><\/CODE>\ub85c \ubc18\ud658\ub41c \uc790\ub8cc\ub294 \ucc3e\uc740 \uc790\ub8cc\uc758 \ud3ec\uc778\ud130\uc774\ub2e4. dptr\uc774 NULL\uc774\ub77c\uba74 \uc790\ub8cc\ub97c \ucc3e\uc9c0 \ubabb\ud55c \uac83\uc774\ub2e4. dptr\uc774 NULL\uc774 \uc544\ub2c8\ub77c\uba74 malloc\uc73c\ub85c \ud560\ub2f9\ud55c \uacf5\uac04\uc758 \ud3ec\uc778\ud130\uc774\ub2e4. <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>\ub294 \uc790\ub3d9\uc73c\ub85c \uc774 \uacf5\uac04\ub97c \ubc18\ud658\ud558\uc9c0 \uc54a\ub294\ub2e4. \uc0ac\uc6a9\uc790\ub294 \uc0ac\uc6a9\ud55c \ud6c4 \uc774 \uacf5\uac04\uc744 \ubc18\ud658\ud574\uc57c \ud55c\ub2e4. \uc774\ub7f0 \ubc29\uc2dd\uc740 (<CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE>\uc774\ub098 <CODE><FONT face=\uad74\ub9bc\uccb4>ndbm<\/FONT><\/CODE>\uacfc \ub2ec\ub9ac) \ub098\uc911\uc5d0 \uc0ac\uc6a9\ud558\uae30 \uc704\ud574 \uacb0\uacfc\ub97c \uc800\uc7a5\ud560 \ud544\uc694\ub97c \uc5c6\uac8c\ud55c\ub2e4. (\ub2e8\uc9c0 \ud3ec\uc778\ud130\ub9cc \uc800\uc7a5\ud558\uba74 \ub41c\ub2e4.) (\uc5ed\uc8fc; datum \uad6c\uc870\uccb4\uc758 \ud3ec\uc778\ud130\uac00 \ubc18\ud658\ub418\uc9c0 \uc54a\uc74c\uc744 \uc8fc\uc758\ud558\ub77c. <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_fetch<\/FONT><\/CODE>\ub294 \ub2e8\uc9c0 dptr\uc744 \uc704\ud55c \uba54\ubaa8\ub9ac\ub9cc\uc744 \ub3d9\uc801\uc73c\ub85c \ud560\ub2f9\ud55c\ub2e4. \ub9cc\uc57d \ud0a4\uc640 \uc5f0\uacb0\ub41c \uc790\ub8cc\uac00 \ud06c\uae30\uac00 \uc5c6\ub2e4\uba74 dsize \uba64\ubc84\ub294 0\uc774\uc9c0\ub9cc, dptr\uc740 NULL\uc774 \uc544\ub2c8\uae30 \uc704\ud574\uc11c \ud06c\uae30\uac00 1\ub85c \ud560\ub2f9\ub41c \uba54\ubaa8\ub9ac\ub97c \uac00\ub9ac\ud0a8\ub2e4. \ubc18\ub300\ub85c <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_store<\/FONT><\/CODE>\uc758 \uacbd\uc6b0\uc5d0\ub3c4 \ud06c\uae30\uac00 0\uc778 \uc790\ub8cc\ub97c \ud0a4\ub098 \uc790\ub8cc\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4. <TT><FONT face=\uad74\ub9bc\uccb4><I>datum<\/I>.dsize = 0; <I>datum<\/I>.dptr = \"\";<\/FONT><\/TT>\uacfc \uac19\uc774 \ud558\uba74 \ub41c\ub2e4.) <\/FONT>\n<P>You may also search for a particular key without retrieving it, using: <PRE>ret = gdbm_exists(dbf, key); <\/PRE><br \/><FONT color=blue>\n<P>\ub610\ud55c \ub2e4\uc74c \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc790\ub8cc\ub97c \uac00\uc838\uc624\uc9c0 \uc54a\uace0 \ud2b9\uc815 \ud0a4\uc758 \uc720\ubb34\ub9cc\uc744 \uc54c\uc544\ubcfc \uc218\ub3c4 \uc788\ub2e4. <PRE>ret = gdbm_exists(dbf, key); <\/PRE><\/FONT>\n<P>The parameters are: <br \/><FONT color=blue>\ud30c\ub77c\ubbf8\ud130\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4. <\/FONT>\n<DL compact>\n<DT>GDBM_FILE dbf \n<DD>The pointer returned by <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>. <br \/><FONT color=blue><CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>\uc774 \ubc18\ud658\ud55c \ud3ec\uc778\ud130. <\/FONT>\n<DT>datum key \n<DD>The <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE> data. <br \/><FONT color=blue>\ud0a4. <\/FONT><\/DD><\/DL>\n<P>Unlike <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_fetch<\/FONT><\/CODE>, this routine does not allocate any memory, and simply returns true or false, depending on whether the <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE> exists, or not. <br \/><FONT color=blue><CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_fetch<\/FONT><\/CODE>\uc640 \ub2ec\ub9ac \uc774 \ud568\uc218\ub294 \uba54\ubaa8\ub9ac\ub97c \ud560\ub2f9\ud558\uc9c0 \uc54a\uace0, \ub2e8\uc9c0 <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE>\uc758 \uc874\uc7ac \uc720\ubb34\ub9cc\uc744 \uc54c\ub824\uc900\ub2e4. <\/FONT><!-- <H1><a target='_blank' class='con_link' NAME=\"SEC8\" HREF=\"gdbm.html#TOC8\" rel=\"noopener\">Removing records from the database.<\/A><\/H1> --><br \/><FONT color=blue>\n<H1><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#TOC8\" name=\"SEC8\" target=\"_blank\" rel=\"noopener\">\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \ub808\ucf54\ub4dc \uc0ad\uc81c\ud558\uae30<\/A><\/H1><\/FONT>\n<P>To remove some data from the database: <PRE>ret = gdbm_delete(dbf, key); <\/PRE><br \/><FONT color=blue>\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \uc790\ub8cc\ub97c \uc0ad\uc81c\ud558\ub824\uba74 \ub2e4\uc74c \ud568\uc218\ub97c \uc0ac\uc6a9\ud55c\ub2e4. <PRE>ret = gdbm_delete(dbf, key); <\/PRE><\/FONT>\n<P>The parameters are: <br \/><FONT color=blue>\ud30c\ub77c\ubbf8\ud130\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4. <\/FONT>\n<DL compact>\n<DT>GDBM_FILE dbf \n<DD>The pointer returned by <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>. <br \/><FONT color=blue><CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>\uc774 \ubc18\ud658\ud55c \ud3ec\uc778\ud130. <\/FONT>\n<DT>datum key \n<DD>The <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE> data. <br \/><FONT color=blue>\ud0a4. <\/FONT><\/DD><\/DL>\n<P>The ret value is -1 if the item is not present or the requester is a reader. The ret value is 0 if there was a successful delete. \n<P><CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_delete<\/FONT><\/CODE> removes the keyed item and the <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE> from the database <CODE><FONT face=\uad74\ub9bc\uccb4>dbf<\/FONT><\/CODE>. The file on disk is updated to reflect the structure of the new database before returning from this function. <br \/><FONT color=blue>\n<P>\uc790\ub8cc\uac00 \uc5c6\uac70\ub098 \ub3c5\uc790\uac00 \ud568\uc218\ub97c \ubd80\ub978 \uacbd\uc6b0 -1\uc774 \ubc18\ud658\ub41c\ub2e4. \uc131\uacf5\uc801\uc73c\ub85c \uc0ad\uc81c\ud558\uc600\ub2e4\uba74 0\uc744 \ubc18\ud658\ud55c\ub2e4. \n<P><CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_delete<\/FONT><\/CODE>\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4 <CODE><FONT face=\uad74\ub9bc\uccb4>dbf<\/FONT><\/CODE>\uc5d0\uc11c <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE>\uc640, \uc5f0\uacb0\ub41c \uc790\ub8cc\ub97c \uc0ad\uc81c\ud55c\ub2e4. \uc774 \ud568\uc218\uac00 \ubc18\ud658\ud558\uae30 \uc804\uc5d0, \ub514\uc2a4\ud06c\uc758 \ud30c\uc77c\uc740 \uc0c8\ub85c\uc6b4 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uad6c\uc870\ub97c \ubc18\uc601\ud558\uae30 \uc704\ud574 \uac31\uc2e0\ub41c\ub2e4. <\/FONT><!-- <H1><a target='_blank' class='con_link' NAME=\"SEC9\" HREF=\"gdbm.html#TOC9\" rel=\"noopener\">Sequential access to records.<\/A><\/H1> --><br \/><FONT color=blue>\n<H1><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#TOC9\" name=\"SEC9\" target=\"_blank\" rel=\"noopener\">\ub808\ucf54\ub4dc\ub97c \uc21c\ucc28\uc801\uc73c\ub85c \uc811\uadfc\ud558\uae30<\/A><\/H1><\/FONT>\n<P>The next two functions allow for accessing all items in the database. This access is not <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE> sequential, but it is guaranteed to visit every <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE> in the database once. The order has to do with the hash values. <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_firstkey<\/FONT><\/CODE> starts the visit of all keys in the database. <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_nextkey<\/FONT><\/CODE> finds and reads the next entry in the hash structure for <CODE><FONT face=\uad74\ub9bc\uccb4>dbf<\/FONT><\/CODE>. <PRE>key = gdbm_firstkey(dbf); nextkey = gdbm_nextkey(dbf, key); <\/PRE><br \/><FONT color=blue>\n<P>\ub2e4\uc74c \ub450 \ud568\uc218\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \ubaa8\ub4e0 \ud0a4\ub97c \uc811\uadfc\ud560 \ub54c \uc0ac\uc6a9\ud55c\ub2e4. \uc774\ub294 <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE>\ub97c \uc21c\ucc28\uc801\uc73c\ub85c \uc811\uadfc\ud558\uc9c0\ub294 \uc54a\uc9c0\ub9cc, \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \ubaa8\ub4e0 <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE>\ub97c \ud55c\ubc88\uc529 \uc811\uadfc\ud558\ub294 \uac83\uc744 \ubcf4\uc7a5\ud55c\ub2e4. \uc811\uadfc \uc21c\uc11c\ub294 \ud5e4\uc26c\uac12\uacfc \uad00\ub828\uc774 \uc788\ub2e4. <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_firstkey<\/FONT><\/CODE>\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \ubaa8\ub4e0 \ud0a4\uc758 \uc811\uadfc\uc744 \uc2dc\uc791\ud55c\ub2e4. <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_nextkey<\/FONT><\/CODE>\ub294 <CODE><FONT face=\uad74\ub9bc\uccb4>dbf<\/FONT><\/CODE>\uc758 \ud574\uc26c \uad6c\uc870\uc5d0\uc11c \ub2e4\uc74c \ub808\ucf54\ub4dc\ub97c \ucc3e\uc544\uc11c \ubc18\ud658\ud55c\ub2e4. <PRE>key = gdbm_firstkey(dbf); nextkey = gdbm_nextkey(dbf, key); <\/PRE><\/FONT>\n<P>The parameters are: <br \/><FONT color=blue>\ud30c\ub77c\ubbf8\ud130\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4. <\/FONT>\n<DL compact>\n<DT>GDBM_FILE dbf \n<DD>The pointer returned by <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>. <br \/><FONT color=blue><CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>\uc774 \ubc18\ud658\ud55c \ud3ec\uc778\ud130. <\/FONT>\n<DT>datum <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE> \n<DD>\n<DT>datum nextkey \n<DD>The <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE> data. <br \/><FONT color=blue>\ud0a4. <\/FONT><\/DD><\/DL>\n<P>The return values are both datum. If <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE>.dptr or nextkey.dptr is NULL, there is no first <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE> or next <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE>. Again notice that dptr points to data allocated by malloc and <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> will not free it for you. \n<P>These functions were intended to visit the database in read-only algorithms, for instance, to validate the database or similar operations. <br \/><FONT color=blue>\n<P>\ubc18\ud658\ub41c \uac12\uc740 \ubaa8\ub450 datum \uad6c\uc870\uccb4\uc774\ub2e4. <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE>.dptr\ub098 nextkey.dptr\uc774 NULL\uc774\ub77c\uba74 \uccab <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE>\ub098 \ub2e4\uc74c <CODE><FONT face=\uad74\ub9bc\uccb4>key<\/FONT><\/CODE>\uac00 \uc5c6\ub294 \uac83\uc774\ub2e4. \ub2e4\uc2dc dptr \ud3ec\uc778\ud130\ub294 malloc\uc73c\ub85c \ud560\ub2f9\ud55c \uacf5\uac04\uc744 \uac00\ub9ac\ud0a4\uba70, <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>\ub294 \uc774\ub97c \uc54c\uc544\uc11c \ubc18\ud658\ud558\uc9c0 \uc54a\ub294 \uc810\uc744 \uc8fc\uc758\ud558\ub77c. \n<P>\uc774 \ud568\uc218\ub4e4\uc740 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud655\uc778 \ub4f1\uc758 \uc791\uc5c5\uc744 \uc704\ud574 \uc77d\uae30\uc804\uc6a9\uc73c\ub85c \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc811\uadfc\ud568\uc744 \uac00\uc815\ud55c\ub2e4. <\/FONT>\n<P>File <CODE><FONT face=\uad74\ub9bc\uccb4>visiting<\/FONT><\/CODE> is based on a <CODE><FONT face=\uad74\ub9bc\uccb4>hash table<\/FONT><\/CODE>. <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_delete<\/FONT><\/CODE> re-arranges the hash table to make sure that any collisions in the table do not leave some item <CODE><FONT face=\uad74\ub9bc\uccb4>un-findable<\/FONT><\/CODE>. The original key order is NOT guaranteed to remain unchanged in ALL instances. It is possible that some key will not be visited if a loop like the following is executed: <PRE> key = gdbm_firstkey ( dbf ); while ( key.dptr ) { nextkey = gdbm_nextkey ( dbf, key ); if ( some condition ) { gdbm_delete ( dbf, key ); free ( key.dptr ); } key = nextkey; } <\/PRE><br \/><FONT color=blue>\n<P><CODE><FONT face=\uad74\ub9bc\uccb4>\ubc29\ubb38\ud558\ub294<\/FONT><\/CODE> \ud30c\uc77c\uc740 <CODE><FONT face=\uad74\ub9bc\uccb4>\ud574\uc26c\ud14c\uc774\ube14<\/FONT><\/CODE>\uc744 \uae30\ubc18\uc73c\ub85c \ud55c\ub2e4. <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_delete<\/FONT><\/CODE>\ub294 \ud14c\uc774\ube14\uc758 \uc5b4\ub5a4 \ubd88\uc77c\uce58\uac00 \uc790\ub8cc\ub97c <CODE><FONT face=\uad74\ub9bc\uccb4>\ucc3e\uc744 \uc218 \uc5c6\uac8c<\/FONT><\/CODE> \ub9cc\ub4e4\uc9c0 \uc54a\uac8c\ud558\uae30 \uc704\ud574\uc11c \ud574\uc26c\ud14c\uc774\ube14\uc744 \uc7ac\uc815\ub82c\ud55c\ub2e4. \uc6d0\ub798 \ud0a4 \uc21c\uc11c\uac00 \uadf8\ub300\ub85c \uc720\uc9c0\ub41c\ub2e4\uace0 \ubcf4\uc7a5\ud558\uc9c0 \ubabb\ud55c\ub2e4. \ub2e4\uc74c\uacfc \uac19\uc740 (\ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc218\uc815\ud558\ub294) \ubc18\ubcf5\ubb38\uc5d0\uc11c \uc5b4\ub5a4 \ud0a4\ub294 \uc811\uadfc\ud558\uc9c0 \ubabb\ud560 \uc218\ub3c4 \uc788\ub2e4. <PRE> key = gdbm_firstkey ( dbf ); while ( key.dptr ) { nextkey = gdbm_nextkey ( dbf, key ); if ( some condition ) { gdbm_delete ( dbf, key ); free ( key.dptr ); } key = nextkey; } <\/PRE><\/FONT><!-- <H1><a target='_blank' class='con_link' NAME=\"SEC10\" HREF=\"gdbm.html#TOC10\" rel=\"noopener\">Database reorganization.<\/A><\/H1> --><br \/><FONT color=blue>\n<H1><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#TOC10\" name=\"SEC10\" target=\"_blank\" rel=\"noopener\">\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc7ac\uad6c\uc131<\/A><\/H1><\/FONT>\n<P>The following function should be used very seldom. <PRE>ret = gdbm_reorganize(dbf); <\/PRE><br \/><FONT color=blue>\n<P>\ub2e4\uc74c \ud568\uc218\ub294 \ub9e4\uc6b0 \ub4dc\ubb3c\uac8c \uc0ac\uc6a9\ud574\uc57c \ud55c\ub2e4. <PRE>ret = gdbm_reorganize(dbf); <\/PRE><\/FONT>\n<P>The parameter is: <br \/><FONT color=blue>\ud30c\ub77c\ubbf8\ud130\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4. <\/FONT>\n<DL compact>\n<DT>GDBM_FILE dbf \n<DD>The pointer returned by <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>. <br \/><FONT color=blue><CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>\uc774 \ubc18\ud658\ud55c \ud3ec\uc778\ud130. <\/FONT><\/DD><\/DL>\n<P>If you have had a lot of deletions and would like to shrink the space used by the <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> file, this function will reorganize the database. <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> will not shorten the length of a <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> file (deleted file space will be reused) except by using this reorganization. \n<P>This reorganization requires creating a new file and inserting all the elements in the old file <CODE><FONT face=\uad74\ub9bc\uccb4>dbf<\/FONT><\/CODE> into the new file. The new file is then renamed to the same name as the old file and <CODE><FONT face=\uad74\ub9bc\uccb4>dbf<\/FONT><\/CODE> is updated to contain all the correct information about the new file. If an error is detected, the return value is negative. The value zero is returned after a successful reorganization. <br \/><FONT color=blue>\n<P>\ub9e4\uc6b0 \ub9ce\uc774 \uc0ad\uc81c\ud55c \ud6c4 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \ud30c\uc77c\uc774 \uc0ac\uc6a9\ud558\ub294 \uacf5\uac04\uc744 \uc904\uc774\uace0 \uc2f6\uc744 \ub54c, \uc774 \ud568\uc218\ub85c \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc7ac\uad6c\uc131\ud55c\ub2e4. <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>\ub294 \uc774 \uc7ac\uad6c\uc131 \uc678\uc758 \uacbd\uc6b0\uc5d0\ub294 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \ud30c\uc77c \ud06c\uae30\ub97c \uc904\uc774\uc9c0 \uc54a\ub294\ub2e4. (\uc0ad\uc81c\ud55c \ud6c4 \ub0a8\uc740 \ud30c\uc77c \uacf5\uac04\uc740 \uc7ac\uc0ac\uc6a9\ub41c\ub2e4.) \n<P>\uc7ac\uad6c\uc131\uc740 \uc0c8\ub85c \ud30c\uc77c\uc744 \ub9cc\ub4e4\uace0 \uae30\uc874\uc758 <CODE><FONT face=\uad74\ub9bc\uccb4>dbf<\/FONT><\/CODE> \ud30c\uc77c\uc758 \ubaa8\ub4e0 \uc790\ub8cc\ub97c \uc0c8 \ud30c\uc77c\uc5d0 \uc9d1\uc5b4\ub123\ub294\ub2e4. \uadf8\ud6c4 \uc0c8 \ud30c\uc77c\uc740 \ucc98\uc74c \ud30c\uc77c\uacfc \uac19\uc740 \uc774\ub984\uc73c\ub85c \ubcc0\uacbd\ub418\uace0, <CODE><FONT face=\uad74\ub9bc\uccb4>dbf<\/FONT><\/CODE>\ub294 \uc0c8 \ud30c\uc77c\uc5d0 \ub300\ud55c \uc815\ubcf4\ub85c \uac31\uc2e0\ub41c\ub2e4. \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uba74 \ubc18\ud658\uac12\uc740 \uc74c\uc218\uc774\ub2e4. \uc131\uacf5\uc801\uc73c\ub85c \uc7ac\uad6c\uc131\uc744 \ub9c8\ucce4\ub2e4\uba74 0\uc744 \ubc18\ud658\ud55c\ub2e4. <\/FONT><!-- <H1><a target='_blank' class='con_link' NAME=\"SEC11\" HREF=\"gdbm.html#TOC11\" rel=\"noopener\">Database Synchronization<\/A><\/H1> --><br \/><FONT color=blue>\n<H1><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#TOC11\" name=\"SEC11\" target=\"_blank\" rel=\"noopener\">\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub3d9\uae30\ud654<\/A><\/H1><\/FONT>\n<P>Unless your database was opened with the GDBM_SYNC flag, <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> does not wait for writes to be flushed to the disk before continuing. This allows faster writing of databases at the risk of having a corrupted database if the application terminates in an abnormal fashion. The following function allows the programmer to make sure the disk version of the database has been completely updated with all changes to the current time. <PRE>gdbm_sync(dbf); <\/PRE><br \/><FONT color=blue>\n<P>\ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c GDBM_SYNC \ud50c\ub798\uadf8\ub85c \uc5f4\uc9c0 \uc54a\uc558\ub2e4\uba74, <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>\uc740 \uc790\ub8cc\uac00 \ub514\uc2a4\ud06c\uc5d0 \uc4f0\uc5ec\uc9c0\ub294 \uac83\uc744 \uae30\ub2e4\ub9ac\uc9c0 \uc54a\ub294\ub2e4. \uadf8\ub798\uc11c \ube68\ub9ac \ub370\uc774\ud14c\ubca0\uc774\uc2a4\uc5d0 \uc4f8 \uc218 \uc788\uc9c0\ub9cc, \ud504\ub85c\uadf8\ub7a8\uc774 \ube44\uc815\uc0c1\uc801\uc73c\ub85c \uc885\ub8cc\ud558\ub294 \uacbd\uc6b0 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ub9dd\uac00\ud2b8\ub9b4 \uc218 \uc788\ub2e4. \ub2e4\uc74c \ud568\uc218\ub294 \ud604\uc7ac\uae4c\uc9c0 \ubaa8\ub4e0 \ubcc0\ud654\uac00 \ub514\uc2a4\ud06c\uc5d0 \uc644\uc804\ud788 \uae30\ub85d\ub418\uc5c8\uc74c\uc744 \ubcf4\uc7a5\ud55c\ub2e4. <PRE>gdbm_sync(dbf); <\/PRE><\/FONT>\n<P>The parameter is: <br \/><FONT color=blue>\ud30c\ub77c\ubbf8\ud130\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4. <\/FONT>\n<DL compact>\n<DT>GDBM_FILE dbf \n<DD>The pointer returned by <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>. <br \/><FONT color=blue><CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>\uc774 \ubc18\ud658\ud55c \ud3ec\uc778\ud130. <\/FONT><\/DD><\/DL>\n<P>This would usually be called after a complete set of changes have been made to the database and before some long waiting time. <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_close<\/FONT><\/CODE> automatically calls the equivalent of <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_sync<\/FONT><\/CODE> so no call is needed if the database is to be closed immediately after the set of changes have been made. <br \/><FONT color=blue>\uc774 \ud568\uc218\ub294 \ubcf4\ud1b5 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc77c\ub828\uc758 \ubcc0\ud654\ub97c \uc900 \ud6c4, \uc624\ub798\ub3d9\uc548 \uc26c\uae30 \uc804\uc5d0 \uc0ac\uc6a9\ud55c\ub2e4. <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_close<\/FONT><\/CODE>\ub294 \uc790\ub3d9\uc73c\ub85c <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_sync<\/FONT><\/CODE>\uc640 \ube44\uc2b7\ud55c \uc791\uc5c5\uc744 \ud558\uae30 \ub54c\ubb38\uc5d0 \ubcc0\ud654\ud6c4 \uc989\uc2dc \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ub2eb\ub294\ub2e4\uba74 \uc774 \ud568\uc218\ub97c \uc0ac\uc6a9\ud560 \ud544\uc694\ub294 \uc5c6\ub2e4. <\/FONT><!-- <H1><a target='_blank' class='con_link' NAME=\"SEC12\" HREF=\"gdbm.html#TOC12\" rel=\"noopener\">Error strings.<\/A><\/H1> --><br \/><FONT color=blue>\n<H1><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#TOC12\" name=\"SEC12\" target=\"_blank\" rel=\"noopener\">\uc624\ub958 \ubb38\uc790\uc5f4<\/A><\/H1><\/FONT>\n<P>To convert a <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> error code into English text, use this routine: <PRE>ret = gdbm_strerror(errno) <\/PRE><br \/><FONT color=blue>\ub2e4\uc74c \ud568\uc218\ub294 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \uc624\ub958 \ucf54\ub4dc\ub97c \uc601\uc5b4 \ubb38\uc7a5\uc73c\ub85c \ubc14\uafbc\ub2e4. <PRE>ret = gdbm_strerror(errno) <\/PRE><\/FONT>\n<P>The parameter is: <br \/><FONT color=blue>\ud30c\ub77c\ubbf8\ud130\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4. <\/FONT>\n<DL compact>\n<DT>gdbm_error errno \n<DD>The <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> error code, usually <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_errno<\/FONT><\/CODE>. <br \/><FONT color=blue><CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \uc624\ub958 \ucf54\ub4dc, \ubcf4\ud1b5 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_errno<\/FONT><\/CODE>. <\/FONT><\/DD><\/DL>\n<P>The appropiate phrase for reading by humans is returned. <br \/><FONT color=blue>\n<P>\uc0ac\ub78c\uc774 \uc54c\uc544\ubcfc \uc218 \uc788\ub294 \ubb38\uad6c\uac00 \ubc18\ud658\ub41c\ub2e4. <\/FONT><!-- <H1><a target='_blank' class='con_link' NAME=\"SEC13\" HREF=\"gdbm.html#TOC13\" rel=\"noopener\">Seting options.<\/A><\/H1> --><br \/><FONT color=blue>\n<H1><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#TOC13\" name=\"SEC13\" target=\"_blank\" rel=\"noopener\">\uc635\uc158 \uc124\uc815\ud558\uae30<\/A><\/H1><\/FONT>\n<P><CODE><FONT face=\uad74\ub9bc\uccb4>Gdbm<\/FONT><\/CODE> supports the ability to set certain options on an already open database. <PRE>ret = gdbm_setopt(dbf, option, value, size); <\/PRE><br \/><FONT color=blue>\ub2e4\uc74c \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc774\ubbf8 \uc5f0 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc635\uc158\uc744 \uc124\uc815\ud560 \uc218 \uc788\ub2e4. <PRE>ret = gdbm_setopt(dbf, option, value, size); <\/PRE><\/FONT>\n<P>The parameters are: \n<DL compact>\n<DT>GDBM_FILE dbf \n<DD>The pointer returned by <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>. <br \/><FONT color=blue><CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>\uc774 \ubc18\ud658\ud55c \ud3ec\uc778\ud130. <\/FONT>\n<DT>int option \n<DD>The option to be set. <br \/><FONT color=blue>\uc124\uc815\ud560 \uc635\uc158. <\/FONT>\n<DT>int *value \n<DD>A pointer to the value to which <CODE><FONT face=\uad74\ub9bc\uccb4>option<\/FONT><\/CODE> will be set. <br \/><FONT color=blue><CODE><FONT face=\uad74\ub9bc\uccb4>option<\/FONT><\/CODE> \uac12\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc790\ub8cc\uc758 \ud3ec\uc778\ud130. <\/FONT>\n<DT>int size \n<DD>The length of the data pointed to by <CODE><FONT face=\uad74\ub9bc\uccb4>value<\/FONT><\/CODE>. <br \/><FONT color=blue><CODE><FONT face=\uad74\ub9bc\uccb4>value<\/FONT><\/CODE> \ud3ec\uc778\ud130\uac00 \uac00\ub9ac\ud0a4\ub294 \uc790\ub8cc\uc758 \ud06c\uae30. <\/FONT><\/DD><\/DL>\n<P>The valid options are: <br \/><FONT color=blue>\uac00\ub2a5\ud55c \uc635\uc158\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4. <\/FONT>\n<P>GDBM_CACHESIZE - Set the size of the internal bucket cache. This option may only be set once on each GDBM_FILE descriptor, and is set automatically to 100 upon the first access to the database. <br \/><FONT color=blue>GDBM_CACHESIZE - \ub0b4\ubd80 \ubc84\ud0b7(bucket) \uce90\uc26c\uc758 \ud06c\uae30\ub97c \uc124\uc815\ud55c\ub2e4. \uc774 \uc635\uc158\uc740 \uac01 GDBM_FILE \uae30\uc220\uc790\uc5d0 \ud55c\ubc88\ub9cc \uc0ac\uc6a9\ud560 \uc218 \uc788\uace0, \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \ucc98\uc74c \uc811\uadfc\ud560 \ub54c \uc790\ub3d9\uc73c\ub85c 100\uc73c\ub85c \uc124\uc815\ub41c\ub2e4. <\/FONT>\n<P>GDBM_FASTMODE - Set fast mode to either on or off. This allows fast mode to be toggled on an already open and active database. value (see below) should be set to either TRUE or FALSE. <EM>This option is now obsolete.<\/EM> <br \/><FONT color=blue>GDBM_FASTMODE - \ube60\ub978 \ubaa8\ub4dc\ub97c \ud0a4\uace0 \ub048\ub2e4. \uc774 \uc635\uc158\uc740 \uc774\ubbf8 \uc5f4\ub824\uc9c4 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \ube60\ub978 \ubaa8\ub4dc\ub97c \ud0a4\uace0 \ub048\ub2e4. \uac12\uc740 TRUE\ub098 FALSE\ub9cc\uc774 \uac00\ub2a5\ud558\ub2e4. (\uc544\ub798 \ucc38\uace0) <EM>\uc774 \uc635\uc158\uc740 \ud604\uc7ac \uc0ac\uc6a9\ub418\uc9c0 \uc54a\ub294\ub2e4.<\/EM> <\/FONT>\n<P>GDBM_SYNCMODE - Turn on or off file system synchronization operations. This setting defaults to off; value (see below) should be set to either TRUE or FALSE. <br \/><FONT color=blue>GDBM_SYNCMODE - \ud30c\uc77c\uc2dc\uc2a4\ud15c \ub3d9\uae30\ud654\ub97c \ud0a4\uace0 \ub048\ub2e4. \uae30\ubcf8\uac12\uc740 \uaebc\uc838\uc788\ub2e4. \uac12\uc740 TRUE\ub098 FALSE\ub9cc\uc774 \uac00\ub2a5\ud558\ub2e4. (\uc544\ub798 \ucc38\uace0) <\/FONT>\n<P>GDBM_CENTFREE - Set central free block pool to either on or off. The default is off, which is how previous versions of <CODE><FONT face=\uad74\ub9bc\uccb4>Gdbm<\/FONT><\/CODE> handled free blocks. If set, this option causes all subsequent free blocks to be placed in the <EM>global<\/EM> pool, allowing (in theory) more file space to be reused more quickly. value (see below) should be set to either TRUE or FALSE. <EM>NOTICE: This feature is still under study.<\/EM> <br \/><FONT color=blue>GDBM_CENTFREE - \uc911\uc559 \ud504\ub9ac\ube14\ub7ed \ud480(free block pool)\uc744 \ud0a4\uace0 \ub048\ub2e4. \uae30\ubcf8\uac12\uc740 \uaebc\uc838\uc788\ub2e4. \uc774\ub294 \uacfc\uac70 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>\uc774 \ud504\ub9ac\ube14\ub7ed\uc744 \ub2e4\ub8e8\ub294 \ubc29\ubc95\uc774\uc5c8\ub2e4. \uc774 \uc635\uc158\uc744 \ud0a4\uba74 \uc774\ud6c4 \ubaa8\ub4e0 \ud504\ub9ac\ube14\ub7ed\uc744 <EM>\uc804\uc5ed<\/EM> \ud480\uc5d0 \ub450\uc5b4\uc11c (\uc774\ub860\uc801\uc73c\ub85c) \ub354 \ub9ce\uc740 \ud30c\uc77c\uacf5\uac04\uc774 \ube68\ub9ac \uc7ac\uc0ac\uc6a9\ub418\uac8c \ud55c\ub2e4. \uac12\uc740 TRUE\ub098 FALSE\ub9cc\uc774 \uac00\ub2a5\ud558\ub2e4. (\uc544\ub798 \ucc38\uace0) <EM>\uc8fc\uc758: \uc774 \uae30\ub2a5\uc740 \ud604\uc7ac \uc5f0\uad6c\uc911\uc774\ub2e4.<\/EM> <\/FONT>\n<P>GDBM_COALESCEBLKS - Set free block merging to either on or off. The default is off, which is how previous versions of <CODE><FONT face=\uad74\ub9bc\uccb4>Gdbm<\/FONT><\/CODE> handled free blocks. If set, this option causes adjacent free blocks to be merged. This can become a CPU expensive process with time, though, especially if used in conjunction with GDBM_CENTFREE. value (see below) should be set to either TRUE or FALSE. <EM>NOTICE: This feature is still under study.<\/EM> <br \/><FONT color=blue>GDBM_COALESCEBLKS - \ud504\ub9ac\ube14\ub7ed \ud569\uce58\uae30\ub97c \ud0a4\uace0 \ub048\ub2e4. \uae30\ubcf8\uac12\uc740 \uaebc\uc838\uc788\ub2e4. \uc774\ub294 \uacfc\uac70 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>\uc774 \ud504\ub9ac\ube14\ub7ed\uc744 \ub2e4\ub8e8\ub294 \ubc29\ubc95\uc774\uc5c8\ub2e4. \uc774 \uc635\uc158\uc744 \ud0a4\uba74 \uc774\uc6c3\ud55c \ud504\ub9ac\ube14\ub7ed\ub4e4\uc744 \ud569\uce5c\ub2e4. \uadf8\ub7ec\ub098 \uc774 \uc791\uc5c5\uc740 (\ud2b9\ud788 GDBM_CENTFREE\uc640 \ud568\uaed8 \uc0ac\uc6a9\ud558\uba74) CPU \uc790\uc6d0\uc744 \ub9ce\uc774 \ucc28\uc9c0\ud55c\ub2e4. \uac12\uc740 TRUE\ub098 FALSE\ub9cc\uc774 \uac00\ub2a5\ud558\ub2e4. (\uc544\ub798 \ucc38\uace0) <\/FONT>\n<P>The return value will be -1 upon failure, or 0 upon success. The global variable <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_errno<\/FONT><\/CODE> will be set upon failure. \n<P>For instance, to set a database to use a cache of 10, after opening it with <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>, but prior to accessing it in any way, the following code could be used: <PRE>int value = 10; ret = gdbm_setopt(dbf, GDBM_CACHESIZE, &amp;value, sizeof(int)); <\/PRE><br \/><FONT color=blue>\n<P>\uc2e4\ud328\ud558\uba74 -1, \uc131\uacf5\ud558\uba74 0\uc774 \ubc18\ud658\ub41c\ub2e4. \uc2e4\ud328\uc2dc \uc804\uc5ed\ubcc0\uc218 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_errno<\/FONT><\/CODE>\uac00 \uc124\uc815\ub41c\ub2e4. \n<P>\uc608\ub97c \ub4e4\uc5b4 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>\uc73c\ub85c \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc5f0 \ud6c4 \uc2e4\uc81c\ub85c \uc811\uadfc\ud558\uae30 \uc804\uc5d0 \ub2e4\uc74c\uacfc \uac19\uc774 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \uce90\uc26c\ub97c 10\uc73c\ub85c \uc124\uc815\ud560 \uc218 \uc788\ub2e4. <PRE>int value = 10; ret = gdbm_setopt(dbf, GDBM_CACHESIZE, &amp;value, sizeof(int)); <\/PRE>\n<P>(\uc5ed\uc8fc; \uc704\uc5d0\uc11c TRUE\ub098 FALSE\ub9cc\uc774 \uac00\ub2a5\ud558\ub2e4\uace0 \ud588\ub294\ub370, \uc774 \ub450 \uac12\uc740 \ud5e4\ub354\ud30c\uc77c\uc5d0\uc11c \uc815\uc758\ub418\uc5c8\uc73c\ubbc0\ub85c <TT><FONT face=\uad74\ub9bc\uccb4>int value = TRUE;<\/FONT><\/TT>\uc640 \uac19\uc774 \uc0ac\uc6a9\ud558\uba74 \ub41c\ub2e4.) <\/FONT><!-- <H1><a target='_blank' class='con_link' NAME=\"SEC14\" HREF=\"gdbm.html#TOC14\" rel=\"noopener\">File Locking.<\/A><\/H1> --><br \/><FONT color=blue>\n<H1><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#TOC14\" name=\"SEC14\" target=\"_blank\" rel=\"noopener\">\ud30c\uc77c \uc7a0\uadf8\uae30<\/A><\/H1><\/FONT>\n<P>With locking disabled (if <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE> was called with GDBM_NOLOCK), the user may want to perform their own file locking on the database file in order to prevent multiple writers operating on the same file simultaneously. \n<P>In order to support this, the <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_fdesc<\/FONT><\/CODE> routine is provided. <PRE>ret = gdbm_fdesc(dbf); <\/PRE><br \/><FONT color=blue>\n<P>(<CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>\uc5d0\uc11c GDBM_NOLOCK\uc744 \uc0ac\uc6a9\ud558\uc5ec) \uc7a0\uadf8\uae30\ub97c \uc548\ud55c\ub2e4\uba74 \uac19\uc740 \ud30c\uc77c\uc5d0 \ub3d9\uc2dc\uc5d0 \uc5ec\ub7ec \ud544\uc790\uac00 \uc811\uadfc\ud558\ub294 \uac83\uc744 \ub9c9\uae30\uc704\ud574 \uc9c1\uc811 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud30c\uc77c\uc744 \uc7a0\uae00 \ud544\uc694\uac00 \uc788\ub2e4. \n<P>\uc774\ub97c \uc9c0\uc6d0\ud558\uae30 \uc704\ud574 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_fdesc<\/FONT><\/CODE> \ud568\uc218\uac00 \uc81c\uacf5\ub41c\ub2e4. <PRE>ret = gdbm_fdesc(dbf); <\/PRE><\/FONT>\n<P>The single valid parameter is: <br \/><FONT color=blue>\ud30c\ub77c\ubbf8\ud130\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4. <\/FONT>\n<DL compact>\n<DT>GDBM_FILE dbf \n<DD>The pointer returned by <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>. <br \/><FONT color=blue><CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>\uc774 \ubc18\ud658\ud55c \ud3ec\uc778\ud130. <\/FONT><\/DD><\/DL>\n<P>The return value will be the file descriptor of the database. <br \/><FONT color=blue>\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \ud30c\uc77c\uae30\uc220\uc790\uac00 \ubc18\ud658\ub41c\ub2e4. <\/FONT><!-- <H1><a target='_blank' class='con_link' NAME=\"SEC15\" HREF=\"gdbm.html#TOC15\" rel=\"noopener\">Two useful variables.<\/A><\/H1> --><br \/><FONT color=blue>\n<H1><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#TOC15\" name=\"SEC15\" target=\"_blank\" rel=\"noopener\">\ub450 \uc720\uc6a9\ud55c \ubcc0\uc218<\/A><\/H1><\/FONT>\n<P>The following two variables are variables that may need to be used: <br \/><FONT color=blue>\n<P>\ub2e4\uc74c \ub450 \ubcc0\uc218\uac00 \ud544\uc694\ud560 \uc218 \uc788\ub2e4. <\/FONT>\n<DL compact>\n<DT>gdbm_error gdbm_errno \n<DD>The variable that contains more information about <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> errors (<CODE><FONT face=\uad74\ub9bc\uccb4>gdbm.h<\/FONT><\/CODE> has the definitions of the error values). <br \/><FONT color=blue><CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \uc624\ub958\uc5d0 \ub300\ud55c \uc815\ubcf4\ub97c \uc800\uc7a5\ud558\ub294 \ubcc0\uc218. (\uc624\ub958\uac12\uc758 \uc815\uc758\ub294 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm.h<\/FONT><\/CODE>\uc5d0 \uc788\ub2e4.) <\/FONT>\n<DT>char * gdbm_version \n<DD>The string containing the version information. <br \/><FONT color=blue>\ubc84\uc804 \uc815\ubcf4\ub97c \uc800\uc7a5\ud558\ub294 \ubb38\uc790\uc5f4. <\/FONT><\/DD><\/DL><!-- <H1><a target='_blank' class='con_link' NAME=\"SEC16\" HREF=\"gdbm.html#TOC16\" rel=\"noopener\">Compatibility with standard <CODE>dbm<\/CODE> and <CODE>ndbm<\/CODE>.<\/A><\/H1> --><br \/><FONT color=blue>\n<H1><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#TOC16\" name=\"SEC16\" target=\"_blank\" rel=\"noopener\">\ud45c\uc900 <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE>, <CODE><FONT face=\uad74\ub9bc\uccb4>ndbm<\/FONT><\/CODE>\uacfc \ud638\ud658\uc131<\/A><\/H1><\/FONT>\n<P>GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> files are not <CODE><FONT face=\uad74\ub9bc\uccb4>sparse<\/FONT><\/CODE>. You can copy them with the UNIX <CODE><FONT face=\uad74\ub9bc\uccb4>cp<\/FONT><\/CODE> command and they will not expand in the copying process. \n<P>There is a compatibility mode for use with programs that already use UNIX <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> and UNIX <CODE><FONT face=\uad74\ub9bc\uccb4>ndbm<\/FONT><\/CODE>. \n<P>GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> has compatibility functions for <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE>. For <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> compatibility functions, you need the include file <CODE><FONT face=\uad74\ub9bc\uccb4>dbm.h<\/FONT><\/CODE>. <br \/><FONT color=blue>\n<P>GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> \ud30c\uc77c\uc740 <CODE><FONT face=\uad74\ub9bc\uccb4>\uc911\uac04\uc774 \ube44\uc5b4\uc788\uc9c0(sparse)<\/FONT><\/CODE> \uc54a\ub2e4. \uadf8\ub798\uc11c \uc720\ub2c9\uc2a4 <CODE><FONT face=\uad74\ub9bc\uccb4>cp<\/FONT><\/CODE> \uba85\ub839\uc73c\ub85c \ubcf5\uc0ac\ud574\ub3c4 \ud06c\uae30\uac00 \ucee4\uc9c0\uc9c0 \uc54a\ub294\ub2e4. \n<P>\uc774\ubbf8 \uc720\ub2c9\uc2a4 <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE>\uc774\ub098 <CODE><FONT face=\uad74\ub9bc\uccb4>ndbm<\/FONT><\/CODE>\uc744 \uc0ac\uc6a9\ud558\ub294 \ud504\ub85c\uadf8\ub7a8\uc744 \uc704\ud55c \ud638\ud658 \ubaa8\ub4dc\uac00 \uc788\ub2e4. \n<P>GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE>\uc740 <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE>\uacfc \ud638\ud658\uc744 \uc704\ud55c \ud568\uc218\ub97c \uc81c\uacf5\ud55c\ub2e4. <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> \ud638\ud658 \ud568\uc218\ub294 \ud5e4\ub354\ud30c\uc77c <CODE><FONT face=\uad74\ub9bc\uccb4>dbm.h<\/FONT><\/CODE>\uc5d0 \uc120\uc5b8\ub418\uc788\ub2e4. <\/FONT>\n<P>In this compatibility mode, no <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> file pointer is required by the user, and Only one file may be opened at a time. All users in compatibility mode are assumed to be writers. If the <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> file is a read only, it will fail as a writer, but will also try to open it as a reader. All returned pointers in datum structures point to data that <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> WILL free. They should be treated as static pointers (as standard UNIX <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> does). The compatibility function names are the same as the UNIX <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> function names. Their definitions follow: <PRE>int dbminit(name); int store(key, content); datum fetch(key); int delete(key); datum firstkey(); datum nextkey(key); int dbmclose(); <\/PRE><br \/><FONT color=blue>\n<P>\ud638\ud658 \ubaa8\ub4dc\uc5d0\uc11c <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \ud30c\uc77c\ud3ec\uc778\ud130\ub294 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uace0, \uc624\uc9c1 \ud55c \ud30c\uc77c\ub9cc \ub3d9\uc2dc\uc5d0 \uc5f4 \uc218 \uc788\ub2e4. \ud638\ud658 \ubaa8\ub4dc\uc5d0\uc11c\ub294 \ubaa8\ub4e0 \uc0ac\uc6a9\uc790\ub97c \ud544\uc790\ub85c \uac00\uc815\ud55c\ub2e4. <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \ud30c\uc77c\uc774 \uc77d\uae30\uc804\uc6a9\uc774\ub77c\uba74 \ud544\uc790\uc774\uae30 \ub54c\ubb38\uc5d0 \uc2e4\ud328\ud560 \uac83\uc774\ub2e4. \uadf8\ub7ec\ub098 \ub3c5\uc790\ub85c \ud30c\uc77c\uc744 \uc5f4 \uc218 \uc788\ub2e4. \ubc18\ud658\ub41c datum \uc790\ub8cc\uad6c\uc870\uc758 \ud3ec\uc778\ud130\ub294 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>\uc774 \uc54c\uc544\uc11c \ubc18\ud658\ud55c\ub2e4. \ud3ec\uc778\ud130\ub97c (\ud45c\uc900 \uc720\ub2c9\uc2a4 <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE>\ucc98\ub7fc) \uc815\uc801\ud3ec\uc778\ud130\ub85c \ucde8\uae09\ud574\uc57c \ud55c\ub2e4. \ud638\ud658 \ud568\uc218\uc774\ub984\uc740 \uc720\ub2c9\uc2a4 <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE>\uacfc \uac19\ub2e4. \ud568\uc218 \uc815\uc758\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4. <PRE>int dbminit(name); int store(key, content); datum fetch(key); int delete(key); datum firstkey(); datum nextkey(key); int dbmclose(); <\/PRE><\/FONT>\n<P>Standard UNIX <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> and GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> do not have the same data format in the file. You cannot access a standard UNIX <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> file with GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE>! If you want to use an old database with GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE>, you must use the <CODE><FONT face=\uad74\ub9bc\uccb4>conv2gdbm<\/FONT><\/CODE> program. \n<P>Also, GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> has compatibility functions for <CODE><FONT face=\uad74\ub9bc\uccb4>ndbm<\/FONT><\/CODE>. For <CODE><FONT face=\uad74\ub9bc\uccb4>ndbm<\/FONT><\/CODE> compatibility functions, you need the include file <CODE><FONT face=\uad74\ub9bc\uccb4>ndbm.h<\/FONT><\/CODE>. <br \/><FONT color=blue>\n<P>\ud45c\uc900 \uc720\ub2c9\uc2a4 <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE>\uacfc GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE>\uc740 \uac19\uc740 \ud615\uc2dd\uc73c\ub85c \ud30c\uc77c\uc5d0 \uc790\ub8cc\ub97c \uc800\uc7a5\ud558\uc9c0 \uc54a\ub294\ub2e4. GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE>\uc73c\ub85c \ud45c\uc900 \uc720\ub2c9\uc2a4 <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> \ud30c\uc77c\uc744 \uc811\uadfc\ud560 \uc218 \uc5c6\ub2e4! GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE>\uc73c\ub85c \uae30\uc874\uc758 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc0ac\uc6a9\ud558\ub824\uba74 <CODE><FONT face=\uad74\ub9bc\uccb4>conv2gdbm<\/FONT><\/CODE> \ud504\ub85c\uadf8\ub7a8\uc744 \uc0ac\uc6a9\ud558\uc5ec \ubcc0\ud658\ud574\uc57c \ud55c\ub2e4. \n<P>GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE>\uc740 <CODE><FONT face=\uad74\ub9bc\uccb4>ndbm<\/FONT><\/CODE>\uacfc \ud638\ud658\uc744 \uc704\ud55c \ud568\uc218\ub3c4 \uc81c\uacf5\ud55c\ub2e4. <CODE><FONT face=\uad74\ub9bc\uccb4>ndbm<\/FONT><\/CODE> \ud638\ud658 \ud568\uc218\ub294 \ud5e4\ub354\ud30c\uc77c <CODE><FONT face=\uad74\ub9bc\uccb4>ndbm.h<\/FONT><\/CODE>\uc5d0 \uc120\uc5b8\ub418\uc788\ub2e4. <\/FONT>\n<P>Again, just like <CODE><FONT face=\uad74\ub9bc\uccb4>ndbm<\/FONT><\/CODE>, any returned datum can be assumed to be static storage. You do not have to free that memory, the <CODE><FONT face=\uad74\ub9bc\uccb4>ndbm<\/FONT><\/CODE> compatibility functions will do it for you. \n<P>The functions are: <PRE>DBM *dbm_open(name, flags, mode); void dbm_close(file); datum dbm_fetch(file, key); int dbm_store(file, key, <CODE>content<\/CODE>, 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); <\/PRE><br \/><FONT color=blue>\n<P><CODE><FONT face=\uad74\ub9bc\uccb4>ndbm<\/FONT><\/CODE>\uacfc \uac19\uc774 \ubc18\ud658\ub41c datum\uc740 \uc815\uc801 \uba54\ubaa8\ub9ac\uc5d0 \uc788\ub2e4\uace0 \uac00\uc815\ud55c\ub2e4. \uadf8 \uba54\ubaa8\ub9ac\ub97c \ubc18\ud658\ud558\uba74 \uc548\ub41c\ub2e4. <CODE><FONT face=\uad74\ub9bc\uccb4>ndbm<\/FONT><\/CODE> \ud638\ud658 \ud568\uc218\uac00 \ub300\uc2e0 \ubc18\ud658\ud55c\ub2e4. \n<P>\ud568\uc218\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4. <PRE>DBM *dbm_open(name, flags, mode); void dbm_close(file); datum dbm_fetch(file, key); int dbm_store(file, key, <CODE>content<\/CODE>, 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); <\/PRE><\/FONT>\n<P>If you want to compile an old C program that used UNIX <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> or <CODE><FONT face=\uad74\ub9bc\uccb4>ndbm<\/FONT><\/CODE> and want to use <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> files, execute the following <CODE><FONT face=\uad74\ub9bc\uccb4>cc<\/FONT><\/CODE> command: <PRE>cc ... -L \/usr\/local\/lib -lgdbm <\/PRE><br \/><FONT color=blue>\n<P>\uc720\ub2c9\uc2a4 <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE>\uc774\ub098 <CODE><FONT face=\uad74\ub9bc\uccb4>ndbm<\/FONT><\/CODE>\uc744 \uc0ac\uc6a9\ud558\ub294 \uc624\ub798\ub41c C \ud504\ub85c\uadf8\ub7a8\uc744 \ucef4\ud30c\uc77c \ud560 \ub54c, \ub2e4\uc74c <CODE><FONT face=\uad74\ub9bc\uccb4>cc<\/FONT><\/CODE> \uba85\ub839\uc5b4\ub97c \uc2e4\ud589\ud558\uc5ec <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>\uc744 \uc774\uc6a9\ud55c\ub2e4. <PRE>cc ... -L \/usr\/local\/lib -lgdbm <\/PRE><\/FONT><!-- <H1><a target='_blank' class='con_link' NAME=\"SEC17\" HREF=\"gdbm.html#TOC17\" rel=\"noopener\">Converting <CODE>dbm<\/CODE> files to <CODE>gdbm<\/CODE> format.<\/A><\/H1> --><br \/><FONT color=blue>\n<H1><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#TOC17\" name=\"SEC17\" target=\"_blank\" rel=\"noopener\"><CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> \ud30c\uc77c\uc744 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \ud615\uc2dd\uc73c\ub85c \ubcc0\ud658\ud558\uae30<\/A><\/H1><\/FONT>\n<P>The program <CODE><FONT face=\uad74\ub9bc\uccb4>conv2gdbm<\/FONT><\/CODE> has been provided to help you convert from <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> databases to <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>. The usage is: <PRE>conv2gdbm [-q] [-b block_size] dbm_file [gdbm_file] <\/PRE><br \/><FONT color=blue>\ud504\ub85c\uadf8\ub7a8 <CODE><FONT face=\uad74\ub9bc\uccb4>conv2gdbm<\/FONT><\/CODE>\uc740 <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \ud615\uc2dd\uc73c\ub85c \ubcc0\ud658\ud558\uae30 \uc704\ud574\uc11c \uc81c\uacf5\ub41c\ub2e4. \uc0ac\uc6a9\ubc95\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4. <PRE>conv2gdbm [-q] [-b block_size] dbm_file [gdbm_file] <\/PRE><\/FONT>\n<P>The options are: <br \/><FONT color=blue>\uc635\uc158\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4. <\/FONT>\n<DL compact>\n<DT>-q \n<DD>Causes <CODE><FONT face=\uad74\ub9bc\uccb4>conv2gdbm<\/FONT><\/CODE> to work quietly. <br \/><FONT color=blue><CODE><FONT face=\uad74\ub9bc\uccb4>conv2gdbm<\/FONT><\/CODE>\uc774 \uc9c4\ud589\uacfc\uc815\uc744 \ud654\uba74\uc5d0 \ucd9c\ub825\uc744 \ud558\uc9c0\uc54a\ub294\ub2e4. <\/FONT>\n<DT>block_size \n<DD>Is the same as in <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>. <br \/><FONT color=blue><CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_open<\/FONT><\/CODE>\uc5d0\uc11c\uc640 \uac19\ub2e4. <\/FONT>\n<DT>dbm_file \n<DD>Is the name of the <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> file without the <CODE><FONT face=\uad74\ub9bc\uccb4>.pag<\/FONT><\/CODE> or <CODE><FONT face=\uad74\ub9bc\uccb4>.dir<\/FONT><\/CODE> extensions. <br \/><FONT color=blue><CODE><FONT face=\uad74\ub9bc\uccb4>.pag<\/FONT><\/CODE>\ub098 <CODE><FONT face=\uad74\ub9bc\uccb4>.dir<\/FONT><\/CODE> \ud655\uc7a5\uc790\ub97c \uc81c\uc678\ud55c <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> \ud30c\uc77c\uba85. <\/FONT>\n<DT>gdbm_file \n<DD>Is the complete file name. If not included, the <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> file name is the same as the <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> file name without any extensions. That is <CODE><FONT face=\uad74\ub9bc\uccb4>conv2gdbm<\/FONT><\/CODE> <CODE><FONT face=\uad74\ub9bc\uccb4>dbmfile<\/FONT><\/CODE> converts the files <CODE><FONT face=\uad74\ub9bc\uccb4>dbmfile.pag<\/FONT><\/CODE> and <CODE><FONT face=\uad74\ub9bc\uccb4>dbmfile.dir<\/FONT><\/CODE> into a <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> file called <CODE><FONT face=\uad74\ub9bc\uccb4>dbmfile<\/FONT><\/CODE>. <br \/><FONT color=blue>\uc644\uc804\ud55c \ud30c\uc77c\uba85. \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc73c\uba74 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \ud30c\uc77c\uba85\uc740 <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> \ud30c\uc77c\uba85\uc5d0\uc11c \ud655\uc7a5\uc790\ub97c \ube80 \uac83\uacfc \uac19\ub2e4. \uc989, <CODE><FONT face=\uad74\ub9bc\uccb4>conv2gdbm<\/FONT><\/CODE> <CODE><FONT face=\uad74\ub9bc\uccb4>dbmfile<\/FONT><\/CODE>\uc740 \ud30c\uc77c <CODE><FONT face=\uad74\ub9bc\uccb4>dbmfile.pag<\/FONT><\/CODE>\uacfc <CODE><FONT face=\uad74\ub9bc\uccb4>dbmfile.dir<\/FONT><\/CODE>\uc744 <CODE><FONT face=\uad74\ub9bc\uccb4>dbmfile<\/FONT><\/CODE>\ub77c\ub294 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> \ud30c\uc77c\ub85c \ubcc0\ud658\ud55c\ub2e4. <\/FONT><\/DD><\/DL><!-- <H1><a target='_blank' class='con_link' NAME=\"SEC18\" HREF=\"gdbm.html#TOC18\" rel=\"noopener\">Problems and bugs.<\/A><\/H1> --><br \/><FONT color=blue>\n<H1><a class=\"con_link\" href=\"http:\/\/korea.gnu.org\/manual\/release\/gdbm\/gdbm.html#TOC18\" name=\"SEC18\" target=\"_blank\" rel=\"noopener\">\ubb38\uc81c\uc810\uacfc \ubc84\uadf8<\/A><\/H1><\/FONT>\n<P>If you have problems with GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> or think you've found a bug, please report it. Before reporting a bug, make sure you've actually found a real bug. Carefully reread the documentation and see if it really says you can do what you're trying to do. If it's not clear whether you should be able to do something or not, report that too; it's a bug in the documentation! \n<P>Before reporting a bug or trying to fix it yourself, try to isolate it to the smallest possible input file that reproduces the problem. Then send us the input file and the exact results <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE> gave you. Also say what you expected to occur; this will help us decide whether the problem was really in the documentation. <br \/><FONT color=blue>\n<P>GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE>\uc5d0 \ubb38\uc81c\uac00 \uc788\uac70\ub098 \ubc84\uadf8\ub97c \ubc1c\uacac\ud588\ub2e4\uace0 \uc0dd\uac01\ub418\uba74 \uc54c\ub824\uc918\ub77c. \ubc84\uadf8\ub97c \uc54c\ub9ac\uae30 \uc804\uc5d0 \uc2e4\uc81c\ub85c \ubc84\uadf8\ub97c \ubc1c\uacac\ud588\ub294\uc9c0 \ud655\uc778\ud558\ub77c. \ubb38\uc11c\ub97c \uc8fc\uc758\uc788\uac8c \ub2e4\uc2dc\uc77d\uace0 \uc758\ub3c4\ud55c \uc77c\uc744 \uc2e4\uc81c\ub85c \ud560 \uc218 \uc788\ub294\uc9c0 \uc54c\uc544\ubd10\ub77c. \ud560 \uc218 \uc788\ub294\uc9c0 \uba85\ud655\ud558\uc9c0 \uc54a\ub2e4\uba74 \uadf8\uac83\ub3c4 \uc54c\ub824\ub77c. \uc774\ub294 \ubb38\uc11c\uc758 \ubc84\uadf8\uc774\ub2e4! \n<P>\ubc84\uadf8\ub97c \uc54c\ub9ac\uac70\ub098 \uc9c1\uc811 \uace0\uce58\ub824\ud558\uae30 \uc804\uc5d0 \ubb38\uc81c\ub97c \ub9cc\ub4e4 \uc218 \uc788\ub294 \uac00\ub2a5\ud55c \ucd5c\uc18c\uc758 \uc785\ub825 \ud30c\uc77c\uc744 \ub9cc\ub4e4\uc5b4\ubd10\ub77c. \uadf8\ud6c4 \uc785\ub825\ud30c\uc77c\uacfc <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm<\/FONT><\/CODE>\uc758 \uacb0\uacfc\ub97c \uadf8\ub300\ub85c \uc6b0\ub9ac\uc5d0\uac8c \ubcf4\ub0b4\ub77c. \ub610\ud55c \ubb34\uc2a8 \uc77c\uc774 \uc77c\uc5b4\ub098\uae30\ub97c \ubc14\ub7ac\ub294\uc9c0\ub3c4 \uc54c\ub824\uc918\ub77c. \uadf8\ub7ec\uba74 \uc6b0\ub9ac\uac00 \ubb38\uc11c\uc5d0 \ubb38\uc81c\uac00 \uc788\ub294\uc9c0\ub97c \uc544\ub294\ub370 \ub3c4\uc6c0\uc774 \ub41c\ub2e4. <\/FONT>\n<P>Once you've got a precise problem, send e-mail to: <PRE>Internet: <TT>`bug-gnu-utils@prep.ai.mit.edu'<\/TT>. UUCP: <TT>`mit-eddie!prep.ai.mit.edu!bug-gnu-utils'<\/TT>. <\/PRE><br \/><FONT color=blue>\n<P>\ubb38\uc81c\ub97c \ubc1c\uacac\ud558\uba74 \uc544\ub798\ub85c \uba54\uc77c\uc744 \ubcf4\ub0b4\ub77c. <PRE>\uc778\ud130\ub137: <TT>`bug-gnu-utils@prep.ai.mit.edu'<\/TT>. UUCP: <TT>`mit-eddie!prep.ai.mit.edu!bug-gnu-utils'<\/TT>. <\/PRE><\/FONT>\n<P>Please include the version number of GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> you are using. You can get this information by printing the variable <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_version<\/FONT><\/CODE> (see Variables). \n<P>Non-bug suggestions are always welcome as well. If you have questions about things that are unclear in the documentation or are just obscure features, please report them too. <br \/><FONT color=blue>\n<P>\uc0ac\uc6a9\ud558\ub294 GNU <CODE><FONT face=\uad74\ub9bc\uccb4>dbm<\/FONT><\/CODE> \ubc84\uc804\ub3c4 \uac19\uc774 \uc54c\ub824\uc918\ub77c. \ubc84\uc804\uc740 \ubcc0\uc218 <CODE><FONT face=\uad74\ub9bc\uccb4>gdbm_version<\/FONT><\/CODE>\uc744 \ucd9c\ub825\ud558\uba74 \uc54c \uc218 \uc788\ub2e4. (\"\ub450 \uc720\uc6a9\ud55c \ubcc0\uc218\" \ucc38\uace0) \n<P>\ubc84\uadf8 \uc678\uc5d0 \uc81c\uc548\ub3c4 \ud658\uc601\ud55c\ub2e4. \ubb38\uc11c\uc5d0 \ubd88\ubd84\uba85\ud55c \ub0b4\uc6a9\uc774\ub098 \uc560\ub9e4\ud55c \uae30\ub2a5\uc774 \uc788\ub2e4\uba74 \uc774\uac83\ub3c4 \uc6b0\ub9ac\uc5d0\uac8c \uc54c\ub824\uc8fc\uae38 \ubc14\ub780\ub2e4. <\/FONT>\n<P>You may contact the author by: <PRE> e-mail: phil@cs.wwu.edu us-mail: Philip A. Nelson Computer Science Department Western Washington University Bellingham, WA 98226 <\/PRE><br \/><FONT color=blue>\n<P>\uc544\ub798 \uc8fc\uc18c\ub85c \uc800\uc790\uc640 \uc5f0\ub77d\ud560 \uc218 \uc788\ub2e4. <PRE> e-mail: phil@cs.wwu.edu us-mail: Philip A. Nelson Computer Science Department Western Washington University Bellingham, WA 98226 <\/PRE><\/FONT>\n<P>You may contact the current maintainer by: <PRE> e-mail: downsj@downsj.com <\/PRE><br \/><FONT color=blue>\n<P>\uc544\ub798 \uc8fc\uc18c\ub85c \ud604\uc7ac \uba54\uc778\ud14c\uc774\ub108\uc640 \uc5f0\ub77d\ud560 \uc218 \uc788\ub2e4. <PRE> e-mail: downsj@downsj.com <\/PRE>\n<\/FONT>\n","protected":false},"excerpt":{"rendered":"<p>\ubaa9\ucc28 Copying Conditions. Introduction to GNU dbm. List of functions. Opening the database. Closing the database. Inserting and replacing records in the database. Searching for records in the database. Removing records from the database. Sequential access to records. Database reorganization. Database Synchronization Error strings. Seting options. File Locking. Two useful variables. Compatibility with standard dbm [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[19],"tags":[],"class_list":["post-153","post","type-post","status-publish","format-standard","hentry","category-development_lib"],"_links":{"self":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=153"}],"version-history":[{"count":0,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/153\/revisions"}],"wp:attachment":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=153"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=153"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}