<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>DB_ENV->close()</title> <link rel="stylesheet" href="apiReference.css" type="text/css" /> <meta name="generator" content="DocBook XSL Stylesheets V1.73.2" /> <link rel="start" href="index.html" title="Berkeley DB C API Reference" /> <link rel="up" href="env.html" title="Chapter 5. The DB_ENV Handle" /> <link rel="prev" href="envadd_data_dir.html" title="DB_ENV->add_data_dir()" /> <link rel="next" href="envcreate.html" title="db_env_create" /> </head> <body> <div class="navheader"> <table width="100%" summary="Navigation header"> <tr> <th colspan="3" align="center">DB_ENV->close()</th> </tr> <tr> <td width="20%" align="left"><a accesskey="p" href="envadd_data_dir.html">Prev</a> </td> <th width="60%" align="center">Chapter 5. The DB_ENV Handle </th> <td width="20%" align="right"> <a accesskey="n" href="envcreate.html">Next</a></td> </tr> </table> <hr /> </div> <div class="sect1" lang="en" xml:lang="en"> <div class="titlepage"> <div> <div> <h2 class="title" style="clear: both"><a id="envclose"></a>DB_ENV->close()</h2> </div> </div> </div> <pre class="programlisting">#include <db.h> int DB_ENV->close(DB_ENV *dbenv, u_int32_t flags); </pre> <p> The <code class="methodname">DB_ENV->close()</code> method closes the Berkeley DB environment, freeing any allocated resources and closing any underlying subsystems. </p> <p> The <a class="link" href="env.html" title="Chapter 5. The DB_ENV Handle">DB_ENV</a> 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 <a class="link" href="db.html" title="Chapter 2. The DB Handle">DB</a>, <a class="link" href="dbc.html" title="Chapter 3. The DBcursor Handle">DBcursor</a>, <a class="link" href="txn.html" title="Chapter 12. The DB_TXN Handle">DB_TXN</a>, <a class="link" href="logc.html" title="The DB_LOGC Handle">DB_LOGC</a> and <a class="link" href="memp.html" title="Chapter 8. The DB_MPOOLFILE Handle">DB_MPOOLFILE</a> handles. </p> <p> Where the environment was initialized with the <a class="link" href="envopen.html#envopen_DB_INIT_LOCK">DB_INIT_LOCK</a> flag, calling <code class="methodname">DB_ENV->close()</code> 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 <a class="xref" href="lockvec.html" title="DB_ENV->lock_vec()">DB_ENV->lock_vec()</a> call. </p> <p> Where the environment was initialized with the <a class="link" href="envopen.html#envopen_DB_INIT_MPOOL">DB_INIT_MPOOL</a> flag, calling <code class="methodname">DB_ENV->close()</code> implies calls to <a class="xref" href="mempfclose.html" title="DB_MPOOLFILE->close()">DB_MPOOLFILE->close()</a> for any remaining open files in the memory pool that were returned to this process by calls to <a class="xref" href="mempfopen.html" title="DB_MPOOLFILE->open()">DB_MPOOLFILE->open()</a>. It does not imply a call to <a class="xref" href="mempfsync.html" title="DB_MPOOLFILE->sync()">DB_MPOOLFILE->sync()</a> for those files. </p> <p> Where the environment was initialized with the <a class="link" href="envopen.html#envopen_DB_INIT_TXN">DB_INIT_TXN</a> flag, calling <code class="methodname">DB_ENV->close()</code> 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 <code class="methodname">DB_ENV->close()</code>, 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. </p> <p> Where log cursors were created using the <a class="xref" href="logcursor.html" title="DB_ENV->log_cursor()">DB_ENV->log_cursor()</a> method, calling <code class="methodname">DB_ENV->close()</code> does not imply closing those cursors. </p> <p> In multithreaded applications, only a single thread may call the <code class="methodname">DB_ENV->close()</code> method. </p> <p> After <code class="methodname">DB_ENV->close()</code> has been called, regardless of its return, the Berkeley DB environment handle may not be accessed again. </p> <p> The <code class="methodname">DB_ENV->close()</code> <span> <span> method returns a non-zero error value on failure and 0 on success. </span> </span> </p> <div class="sect2" lang="en" xml:lang="en"> <div class="titlepage"> <div> <div> <h3 class="title"><a id="id1660897"></a>Parameters</h3> </div> </div> </div> <div class="sect3" lang="en" xml:lang="en"> <div class="titlepage"> <div> <div> <h4 class="title"><a id="id1660834"></a>flags</h4> </div> </div> </div> <p> The <span class="bold"><strong>flags</strong></span> parameter is currently unused, and must be set to 0. </p> </div> </div> <div class="sect2" lang="en" xml:lang="en"> <div class="titlepage"> <div> <div> <h3 class="title"><a id="id1660898"></a>Class</h3> </div> </div> </div> <p> <a class="link" href="env.html" title="Chapter 5. The DB_ENV Handle">DB_ENV</a> </p> </div> <div class="sect2" lang="en" xml:lang="en"> <div class="titlepage"> <div> <div> <h3 class="title"><a id="id1660979"></a>See Also</h3> </div> </div> </div> <p> <a class="xref" href="env.html#envlist" title="Database Environments and Related Methods">Database Environments and Related Methods</a> </p> </div> </div> <div class="navfooter"> <hr /> <table width="100%" summary="Navigation footer"> <tr> <td width="40%" align="left"><a accesskey="p" href="envadd_data_dir.html">Prev</a> </td> <td width="20%" align="center"> <a accesskey="u" href="env.html">Up</a> </td> <td width="40%" align="right"> <a accesskey="n" href="envcreate.html">Next</a></td> </tr> <tr> <td width="40%" align="left" valign="top">DB_ENV->add_data_dir() </td> <td width="20%" align="center"> <a accesskey="h" href="index.html">Home</a> </td> <td width="40%" align="right" valign="top"> db_env_create</td> </tr> </table> </div> </body> </html>