Diese Funktionen verwalten Paare aus Schlüssel und zugehörigem Inhalt (key/content) von mindestens 1024 Byte in einer Datenbasis. Die Funktionen bearbeiten sehr große Datenbasen (mit einer Milliarde Blöcken) und greifen auf ein mit einem Schlüssel versehenes Objekt in einem oder zwei Zugriff(en) auf das Dateisystem zu. Dieses Paket ersetzt die frühere dbm -Bibliothek, die nur jeweils eine Datenbasis verwalten kann. key und content werden von der Typdefinition (typedef ) datum beschrieben. datum gibt eine Zeichenkette von dsize Byte an, auf die dptr zeigt. Sowohl beliebige binäre Daten als auch normale ASCII-Zeichenketten sind zulässig. Die Datenbasis wird in zwei Dateien gespeichert. Bei einer Datei handelt es sich um ein Verzeichnis mit dem Suffix .dir , das eine Bitmaske enthält. Die zweite Datei mit dem Suffix .pag enthält die Daten. dbm_open() öffnet eine Datenbasis. Das Argument file muss den Pfadnamen der Datenbank enthalten. Hierdurch werden die Dateien file .dir und file .pag geöffnet und/oder erstellt, abhängig vom Argument open_flags. Die Bedeutung von open_flags entspricht der von oflag der Funktion open() (siehe "open, open64, openat, openat64 - Datei öffnen"), außer dass bei den Dateien der Datenbank, die WRITE-ONLY geöffnet werden, Schreib- und Lesezugriff erlaubt ist. file_mode hat dieselbe Bedeutung wie das dritte Argument von open() . dbm_open() gibt einen Zeiger auf eine Struktur vom Typ DBM zurück. Dieser Zeiger muss von allen übrigen Funktionen dieser Gruppe als Argument db übergeben werden.
dbm_close() schließt eine Datenbasis.
dbm_fetch() liest einen Satz aus der Datenbasis. key ist vom Typ datum und muss den Wert des entsprechenden Schlüssels des Satzes, der gelesen werden soll, enthalten.
dbm_store() schreibt einen Satz in die Datenbasis. key ist vom Typ datum und muss den Wert des entsprechenden Schlüssels des Satzes, der geschrieben werden soll, enthalten. Unter diesem Schlüssel kann der Satz später wieder gelesen, geändert oder gelöscht werden. content ist ebenfalls vom Typ datum und enthält den Inhalt des Satzes, der geschrieben werden soll. Das Argument store_mode kann entweder DBM_INSERT oder DBM_REPLACE lauten. Bei DBM_INSERT werden nur neue Einträge in die Datenbasis aufgenommen; ein bereits vorhandener Eintrag mit gleichem Schlüssel wird nicht geändert. Bei DBM_REPLACE wird ein bestehender Eintrag ersetzt, wenn er den gleichen Schlüssel hat. Bei DBM_INSERT dagegen wird ein bestehender Eintrag mit gleichem Schlüssel nicht ersetzt. Wenn der angegebene Schlüssel in der Datenbasis nicht gefunden wird, fügt dbm_store() den Satz in die Datenbasis ein, unabhängig davon, ob store_mode auf DBM_INSERT oder DBM_REPLACE gesetzt ist.
dbm_delete() löscht einen Satz und den zugehörigen Schlüssel aus der Datenbasis. key ist vom Typ datum und muss den Wert des entsprechenden Schlüssels des Satzes, der gelöscht werden soll, enthalten.
dbm_firstkey() gibt den ersten Schlüssel in der Datenbasis zurück.
dbm_nextkey() gibt den jeweils nächsten Schlüssel in der Datenbasis zurück. Um mit dbm_nextkey() arbeiten zu können, muss zuvor dbm_firstkey() aufgerufen worden sein. Aufeinander folgende Aufrufe von dbm_nextkey() geben jeweils den nächsten Schlüssel zurück, bis alle Schlüssel der Datenbasis abgearbeitet sind.
Die Funktion dbm_error() gibt die Fehlerbedingung der Datenbank zurück. Das Argument db ist ein Zeiger auf eine Datenbankstruktur, die von einem Aufruf von dbm_open() zurückgegeben wurde. Die Funktion dbm_clearerr() löscht die Fehlerbedingung der Datenbank. Das Argument db ist ein Zeiger auf eine Datenbankstruktur, die von einem Aufruf von dbm_open() zurückgegeben wurde. dbm_clearerr() ist nicht threadsicher.
|