1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274
|
<?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>DbEnv::remove()</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 DbEnv Handle" />
<link rel="prev" href="envopen.html" title="DbEnv::open()" />
<link rel="next" href="envset_alloc.html" title="DbEnv::set_alloc()" />
</head>
<body>
<div xmlns="" class="navheader">
<div class="libver">
<p>Library Version 11.2.5.3</p>
</div>
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">DbEnv::remove()</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="envopen.html">Prev</a> </td>
<th width="60%" align="center">Chapter 5.
The DbEnv Handle
</th>
<td width="20%" align="right"> <a accesskey="n" href="envset_alloc.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="envremove"></a>DbEnv::remove()</h2>
</div>
</div>
</div>
<pre class="programlisting">#include <db_cxx.h>
int
DbEnv::remove(const char *db_home, u_int32_t flags);</pre>
<p>
The <code class="methodname">DbEnv::remove()</code> method destroys a Berkeley DB environment if it
is not currently in use. The environment regions, including any
backing files, are removed. Any log or database files and the
environment directory are not removed.
</p>
<p>
If there are processes that have called
<a class="xref" href="envopen.html" title="DbEnv::open()">DbEnv::open()</a> without calling
<a class="xref" href="envclose.html" title="DbEnv::close()">DbEnv::close()</a> (that
is, there are processes currently using the environment),
<code class="methodname">DbEnv::remove()</code> will fail without further action unless the
<a class="link" href="envremove.html#envremove_DB_FORCE">DB_FORCE</a> flag is set,
in which case <code class="methodname">DbEnv::remove()</code> will attempt to remove the
environment, regardless of any processes still using it.
</p>
<p>
The result of attempting to forcibly destroy the environment when it
is in use is unspecified. Processes using an environment often
maintain open file descriptors for shared regions within it. On UNIX
systems, the environment removal will usually succeed, and processes
that have already joined the region will continue to run in that
region without change. However, processes attempting to join the
environment will either fail or create new regions. On other systems
in which the <span class="bold"><strong>unlink</strong></span>(2) system call
will fail if any process has an open file descriptor for the file (for
example Windows/NT), the region removal will fail.
</p>
<p>
Calling <code class="methodname">DbEnv::remove()</code> should not be necessary for most
applications because the Berkeley DB environment is cleaned up as part
of normal database recovery procedures. However, applications may want
to call <code class="methodname">DbEnv::remove()</code> as part of application shut down to free up
system resources. For example, if the
<a class="link" href="envopen.html#envopen_DB_SYSTEM_MEM">DB_SYSTEM_MEM</a> flag
was specified to <a class="xref" href="envopen.html" title="DbEnv::open()">DbEnv::open()</a>,
it may be useful to call <code class="methodname">DbEnv::remove()</code> in order to release system shared memory
segments that have been allocated. Or, on architectures in which
mutexes require allocation of underlying system resources, it may be
useful to call <code class="methodname">DbEnv::remove()</code> in order to release those resources.
Alternatively, if recovery is not required because no database state
is maintained across failures, and no system resources need to be
released, it is possible to clean up an environment by simply removing
all the Berkeley DB files in the database environment's directories.
</p>
<p>
In multithreaded applications, only a single thread may call the
<code class="methodname">DbEnv::remove()</code> method.
</p>
<p>
A <a class="link" href="env.html" title="Chapter 5. The DbEnv Handle">DbEnv</a> handle that has
already been used to open an environment should not be used to call
the <code class="methodname">DbEnv::remove()</code> method; a new <a class="link" href="env.html" title="Chapter 5. The DbEnv Handle">DbEnv</a>
handle should be created for that purpose.
</p>
<p>
After <code class="methodname">DbEnv::remove()</code> has been called, regardless of its return, the
Berkeley DB environment handle may not be accessed again.
</p>
<p>
The <code class="methodname">DbEnv::remove()</code> <span>
<span>
method either returns a non-zero error value or throws an
exception that encapsulates a non-zero error value on
failure, and returns 0 on success.
</span>
</span>
</p>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="idp7092448"></a>Parameters</h3>
</div>
</div>
</div>
<div class="sect3" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="idp7091800"></a>db_home</h4>
</div>
</div>
</div>
<p>
The <span class="bold"><strong>db_home</strong></span> parameter names the
database environment to be removed.
</p>
<p>
When using a Unicode build on Windows (the default), the <span class="bold"><strong>db_home</strong></span> argument will be interpreted as a UTF-8
string, which is equivalent to ASCII for Latin characters.
</p>
</div>
<div class="sect3" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="idp7095456"></a>flags</h4>
</div>
</div>
</div>
<p>
The <span class="bold"><strong>flags</strong></span> parameter must be set to 0 or by
bitwise inclusively <span class="bold"><strong>OR</strong></span>'ing together one or more of the
following values:
</p>
<div class="itemizedlist">
<ul type="disc">
<li>
<p><a id="envremove_DB_FORCE"></a>
<code class="literal">DB_FORCE</code>
</p>
<p>
If set, the environment is removed, regardless of any
processes that may still using it, and no locks are acquired during this
process. (Generally, this flag is specified only when applications were
unable to shut down cleanly, and there is a risk that an application may have
died holding a Berkeley DB lock.)
</p>
</li>
<li>
<p><a id="envremove_DB_USE_ENVIRON"></a>
<code class="literal">DB_USE_ENVIRON</code>
</p>
<p>
The Berkeley DB process' environment may be permitted to specify information to
be used when naming files; see
<a href="../../programmer_reference/env_naming.html" class="olink">Berkeley DB File Naming</a>.
Because permitting users to specify which files are used can create security
problems, environment information will be used in file naming for all users
only if the <code class="literal">DB_USE_ENVIRON</code> flag is set.
</p>
</li>
<li>
<p><a id="envremove_DB_USE_ENVIRON_ROOT"></a>
<code class="literal">DB_USE_ENVIRON_ROOT</code>
</p>
<p>
The Berkeley DB process' environment may be permitted to specify information to
be used when naming files; see
<a href="../../programmer_reference/env_naming.html" class="olink">Berkeley DB File Naming</a>.
Because permitting users to specify which files are used can create security
problems, if the <code class="literal">DB_USE_ENVIRON_ROOT</code> flag is set, environment
information will be used in file naming only for users with appropriate
permissions (for example, users with a user-ID of 0 on <code class="literal">UNIX</code>
systems).
</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="idp7073920"></a>Errors</h3>
</div>
</div>
</div>
<p>
The <code class="methodname">DbEnv::remove()</code> <span>
<span>
method may fail and throw a <a class="link" href="dbexception.html" title="Chapter 6. The DbException Class">DbException</a>
exception, encapsulating one of the following non-zero errors, or return one
of the following non-zero errors:
</span>
</span>
</p>
<div class="sect3" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="idp7119248"></a>EBUSY</h4>
</div>
</div>
</div>
<p>
The shared memory region was in use and the force flag was not set.
</p>
</div>
</div>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="idp7117336"></a>Class</h3>
</div>
</div>
</div>
<p>
<a class="link" href="env.html" title="Chapter 5. The DbEnv Handle">DbEnv</a>
</p>
</div>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="idp7114064"></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="envopen.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="envset_alloc.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">DbEnv::open() </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> DbEnv::set_alloc()</td>
</tr>
</table>
</div>
</body>
</html>
|