標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
XPG4.2 |
両方 |
#define _XOPEN_SOURCE_EXTENDED 1
#include <ndbm.h>
datum dbm_firstkey(DBM *db);
for (key = dbm_firstkey(db); key.dptr !=NULL; key = dbm_nextkey(db))
したがって、dbm_firstkey() 関数を使用して先頭の位置を確立し、その後、NULL の dptr が datum に戻されるまで
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 にエラー値を戻します。また、データベース・エラー標識を設定する場合もあります。