The intent behind this method is two-fold: without it, applications
have no way to ensure that two Berkeley DB applications don't attempt
to use the same segment IDs when creating different Berkeley DB
environments. In addition, by using the same segment IDs each time
the environment is created, previously created segments will be
removed, and the set of segments on the system will not grow without
bound.
</p>
<p>
The database environment's base segment ID may also be configured
using the environment's <ahref="../../programmer_reference/env_db_config.html#env_db_config.DB_CONFIG"class="olink">DB_CONFIG</a> file. The syntax of the entry
in that file is a single line with the string "set_shm_key", one
or more whitespace characters, and the ID. Because the <ahref="../../programmer_reference/env_db_config.html#env_db_config.DB_CONFIG"class="olink">DB_CONFIG</a>
file is read when the database environment is opened, it will
silently overrule configuration done before that time.
</p>
<p>
The <codeclass="methodname">DB_ENV->set_shm_key()</code> method configures operations performed
using the specified <aclass="link"href="env.html"title="Chapter5. The DB_ENV Handle">DB_ENV</a> handle, not all
operations performed on the underlying database environment.
</p>
<p>
The <codeclass="methodname">DB_ENV->set_shm_key()</code> method may not be called after the
<aclass="xref"href="envopen.html"title="DB_ENV->open()">DB_ENV->open()</a> method is called.
If the database environment already exists when
<aclass="xref"href="envopen.html"title="DB_ENV->open()">DB_ENV->open()</a> is called, the
information specified to <codeclass="methodname">DB_ENV->set_shm_key()</code> must be consistent
with the existing environment or corruption can occur.
</p>
<p>
The <codeclass="methodname">DB_ENV->set_shm_key()</code><span>
<span>
method returns a non-zero error value on failure and 0 on success.