EN JA
DBM(3)
DBM(3) FreeBSD Library Functions Manual DBM(3)

名称

dbm_clearerr, dbm_close, dbm_delete, dbm_dirfno, dbm_error, dbm_fetch, dbm_firstkey, dbm_nextkey, dbm_open, dbm_storeデータベースアクセス関数

書式

#include < fcntl.h>
#include < ndbm.h>

DBM *
dbm_open( const char *base, int flags, int mode);

void
dbm_close( DBM *db);

int
dbm_store( DBM *db, datum key, datum data, int flags);

datum
dbm_fetch( DBM *db, datum key);

int
dbm_delete( DBM *db, datum key);

datum
dbm_firstkey( DBM *db);

datum
dbm_nextkey( DBM *db);

int
dbm_error( DBM *db);

int
dbm_clearerr( DBM *db);

int
dbm_dirfno( DBM *db);

解説

データベースアクセス関数です。これらの関数は、 hash(3) データベースで dbopen(3) を使用して実装されます。

datum は、 < ndbm.h> で宣言されます。

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

dbm_open( base, flags, mode) 関数は、データベースをオープンするか作成します。 base 引数は、データベースを含んでいるファイルの basename (接尾辞を除いた名前) です。実際のデータベースは、 .db 接尾辞を持っています。すなわち、 base が“ /home/me/mystuff”である場合、実際のデータベースは、ファイル /home/me/mystuff.db です。 flagsmode 引数は、 open(2) に渡されます。 ( O_RDWR | O_CREAT) は、 flags に対する典型的な値です。 0660 は、 mode に対する典型的な値です。 O_WRONLY は、 flags として許可されません。 dbm_open() によって返されたポインタは、データベースを識別し、他の関数への db 引数です。いくらかのエラーがあった場合、 dbm_open() 関数は、 NULL を返し、 errno を設定します。

dbm_close( db) 関数は、データベースをクローズします。

dbm_store( db, key, data, flags) 関数は、データベースのエントリを挿入するか置換します。 flags 引数は、 DBM_INSERT あるいは DBM_REPLACE のいずれかです。 flagsDBM_INSERT で、データベースが、既に key へのエントリを含んでいる場合、そのエントリは、置換されません。そうでなければ、そのエントリは、置換されるか挿入されます。 dbm_store() 関数は、通常 0 を返しますが、エントリを挿入することができない場合 ( flagsDBM_INSERTkey のエントリが既に存在するので) 1 を返し、いくらかのエラーがあった場合、-1 を返し errno を設定します。

dbm_fetch( db, key) 関数は、 NULL を返すか、あるいは key に対応する data を返します。

dbm_delete( db, key) 関数は、 key のエントリを削除します。 dbm_delete() 関数は、通常 0 を返しますが、データベース中に key のエントリがなかった場合 1 を返し、いくらかのエラーがあった場合、-1 を返し errno を設定します。

dbm_firstkey( db) 関数は、データベース中の最初のキーを返します。 dbm_nextkey( db) 関数は、続くのキーを返します。 db_firstkey() 関数は、 dbm_nextkey() の前に呼ばれなければなりません。キーが返される順序は、特定されていません、ランダムに現れます。すべてのキーが返された後、 dbm_nextkey() 関数は、 NULL を返します。

dbm_error( db) 関数は、最近のエラーの errno 値を返します。 dbm_clearerr( db) 関数は、この値を 0 にリセットし、0 を返します。

dbm_dirfno( db) 関数は、データベースのファイル記述子を返します。

関連項目

open(2), dbopen(3), hash(3)

規格

( dbm_dirfno() を除いて) これらの関数は、 Version 2 of the Single UNIX Specification (“SUSv2”) に含まれています。
April 16, 2006 FreeBSD