dbm_firstkey() - データベースの先頭キーの取得

標準

標準/拡張機能 C/C++ 依存項目

XPG4.2
Single UNIX Specification、バージョン 3

両方  

形式

#define _XOPEN_SOURCE_EXTENDED 1
#include <ndbm.h>

datum dbm_firstkey(DBM *db);

機能説明

dbm_firstkey() 関数は、データベースの先頭キーを戻します。db 引数は、事前に dbm_open() により取得したデータベースへのハンドルです。キーは、任意の 2 進データであるため、dbm_firstkey() と dbm_nextkey() によるキーの戻りの順序には、字句の順序付けは反映されません。さらに、戻りの順序には、レコード挿入の順序付けも反映されません。以下のようなループを実行することによって、データベースからすべてのキーを取り出すことができます。
for (key = dbm_firstkey(db); key.dptr !=NULL; key = dbm_nextkey(db))
したがって、dbm_firstkey() 関数を使用して先頭の位置を確立し、その後、NULL の dptrdatum に戻されるまで dbm_nextkey() 関数を呼び出すループを実行してください。

戻された dptr が有効なのは、このスレッドが次回 に dbm_ 命令を実行するまでに限られます。

z/OS®UNIX サービスの特殊な動作: マルチスレッド環境では、dbm_firstkey() 関数は、スレッド固有のデータを指すポインターを戻します。また、各スレッドは、dbm_nextkey() 命令用にそのスレッド固有の位置情報を保守します。しかし、例えば dbm_store() または dbm_delete() を使用してデータベースに変更を加える他のスレッドは、キーを何度も検索したり、まったく検索しないといった予測できない結果を、dbm_nextkey() を実行するスレッドに対して生じることがあります。別のスレッドがデータベースに変更を加えた場合、アプリケーション は、dbm_firstkey() を使用して先頭の位置をリセットする必要があります。

戻り値

正常終了の場合、dbm_firstkey() は、キーを指すポインター の dptr とキー長の dsize を 含む datum を戻します。

正常に終了しなかった場合、dbm_firstkey() は、dptr に NULL ポインターを戻し、errno にエラー値を戻します。また、データベース・エラー標識を設定する場合もあります。

関連情報