DB_ENV->close()
Prev | Chapter 5. The DB_ENV Handle | Next

## DB_ENV->close()

    #include <db.h>

    int
    DB_ENV->close(DB_ENV *dbenv, u_int32_t flags);

The `DB_ENV->close()` method closes the Berkeley DB environment, freeing any allocated resources and closing any underlying subsystems.

The DB_ENV handle should not be closed while any other handle that refers to it is not yet closed; for example, database environment handles must not be closed while database handles remain open, or transactions in the environment have not yet been committed or aborted. Specifically, this includes the DB, DBcursor, DB_TXN, DB_LOGC and DB_MPOOLFILE handles.

Where the environment was initialized with the DB_INIT_LOCK flag, calling `DB_ENV->close()` does not release any locks still held by the closing process, providing functionality for long-lived locks. Processes that want to have all their locks released can do so by issuing the appropriate DB_ENV->lock_vec() call.

Where the environment was initialized with the DB_INIT_MPOOL flag, calling `DB_ENV->close()` implies calls to DB_MPOOLFILE->close() for any remaining open files in the memory pool that were returned to this process by calls to DB_MPOOLFILE->open(). It does not imply a call to DB_MPOOLFILE->sync() for those files.

Where the environment was initialized with the DB_INIT_TXN flag, calling `DB_ENV->close()` aborts any unresolved transactions. Applications should not depend on this behavior for transactions involving Berkeley DB databases; all such transactions should be explicitly resolved. The problem with depending on this semantic is that aborting an unresolved transaction involving database operations requires a database handle. Because the database handles should have been closed before calling `DB_ENV->close()`, it will not be possible to abort the transaction, and recovery will have to be run on the Berkeley DB environment before further operations are done.

Where log cursors were created using the DB_ENV->log_cursor() method, calling `DB_ENV->close()` does not imply closing those cursors.

In multithreaded applications, only a single thread may call the `DB_ENV->close()` method.

After `DB_ENV->close()` has been called, regardless of its return, the Berkeley DB environment handle may not be accessed again.

The `DB_ENV->close()` method returns a non-zero error value on failure and 0 on success.

### Parameters

#### flags

The flags parameter is currently unused, and must be set to 0.

### Class

DB_ENV

### See Also

Database Environments and Related Methods

Prev | Up | Next
DB_ENV->add_data_dir() | Home | db_env_create