int DB->close(DB *db, u_int32_t flags);
The DB->close method flushes any cached database information to disk, closes any open cursors, frees any allocated resources, and closes any underlying files. Because key/data pairs are cached in memory, failing to sync the file with the DB->close or DB->sync method may result in inconsistent or lost information.
The flags value must be set to 0 or by bitwise inclusively OR'ing together one or more of the following values:
It is important to understand that flushing cached information to disk only minimizes the window of opportunity for corrupted data. Although unlikely, it is possible for database corruption to happen if a system or application crash occurs while writing data to the database. To ensure that database corruption never occurs, applications must either: use transactions and logging with automatic recovery; use logging and application-specific recovery; or edit a copy of the database, and once all applications using the database have successfully called DB->close, atomically replace the original database with the updated copy.
When multiple threads are using the DB concurrently, only a single thread may call the DB->close method.
The DB handle may not be accessed again after DB->close is called, regardless of its return.
The DB->close method returns a non-zero error value on failure and 0 on success.
The DB->close method may fail and return a non-zero error for the following conditions:
The DB->close method may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. If a catastrophic error has occurred, the DB->close method may fail and return DB_RUNRECOVERY, in which case all subsequent Berkeley DB calls will fail in the same way.
Copyright Sleepycat Software