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 です。 flags と mode 引数は、 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 のいずれかです。 flags が DBM_INSERT で、データベースが、既に key へのエントリを含んでいる場合、そのエントリは、置換されません。そうでなければ、そのエントリは、置換されるか挿入されます。 dbm_store() 関数は、通常 0 を返しますが、エントリを挿入することができない場合 ( flags が DBM_INSERT で key のエントリが既に存在するので) 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) 関数は、データベースのファイル記述子を返します。
規格
( dbm_dirfno() を除いて) これらの関数は、 Version 2 of the Single UNIX Specification (“SUSv2”) に含まれています。April 16, 2006 | FreeBSD |