/home/cpanrun/depot/main/contrib-patched/perl/CPAN/src/File-TinyLock/blib/html/site/lib/File/TinyLock.html


DESCRIPTION</pre> <p><code>File::TinyLock</code> provides a <a href=``#lock''><code>lock</code></a>, <code>unlock</code>, and <code>check</code> function for working with file locks.</p> <p> </p> <hr /> <h1><a name=``constructor''>CONSTRUCTOR</a></h1> <dl> <dt><strong><a name=``lock'' class=``item''>lock( [FILE] [,OPTIONS] );</a></strong>

<dd> <p>If <code>FIL&FIL;/code> is not given, then it may instead be passed as the <code>file</code> option described below.</p> </dd> <dd> <p><code>OPTION/code are passed in a hash like fashion, using key and value pairs. Possible options are:</p> </dd> <dd> <p><strong>file</strong> - The file to lock</p> </dd> <dd> <p><strong>timeout</strong> - Number of seconds to continue trying to lock (Default: 10).</p> </dd> <dd> <p><strong>debug</strong> - Print debugging info to STDERR (0=Off, 1=On).</p> </dd> </li> </dl> <p> </p> <hr /> <h1><a name=``return_value''>RETURN VALU&RETURN VALU;/a></h1> <p>Here are a list of return codes of the <a href=``#lock''><code>lock</code></a> function and what they mean:</p> <ol> <li><strong><a name=``the_file_is_locked'' class=``item''>The file is locked.</a></strong>

<li><strong><a name=``the_file_is_not_found'' class=``item''>The file is not found.</a></strong>

<li><strong><a name=``master_lock_exists_and_is_not_writable'' class=``item''>Master lock exists and is not writable</a></strong>

<li><strong><a name=``could_not_unlink_stale_master_lock'' class=``item''>Could not unlink stale master lock</a></strong>

<li><strong><a name=``could_not_fork_ps'' class=``item''>Could not fork ps</a></strong>

<li><strong><a name=``could_not_read_master_lock'' class=``item''>Could not read master lock</a></strong>

<li><strong><a name=``could_not_write_to_temporary_lock'' class=``item''>Could not write to temporary lock</a></strong>

<li><strong><a name=``the_file_is_already_locked'' class=``item''>The file is already locked.</a></strong>

<p>.. and for the <code>check</code> function:</p> </li> <li><strong><a name=``file_is_locked'' class=``item''>File is locked</a></strong>

<li><strong><a name=``file_is_not_locked'' class=``item''>File is not locked</a></strong>

<li><strong><a name=``permissions_problems_with_lock_files'' class=``item''>permissions problems with lock files</a></strong>

<p>.. and the <code>unlock</code> function:</p> </li> <li><strong><a name=``file_unlocked'' class=``item''>File unlocked.</a></strong>

<li><strong><a name=``couldnt_unlock_file'' class=``item''>Couldnt unlock file</a></strong>

<li><strong><a name=``couldnt_unlink_master_lock'' class=``item''>Couldnt unlink master lock</a></strong>

<li><strong><a name=``couldnt_unlink_temporary_lock'' class=``item''>Couldnt unlink temporary lock</a></strong>

</ol> <p> </p> <hr /> <h1><a name=``examples''>EXAMPLE/a</h1> <pre> <span class=``keyword''>use</span> <span class=``variable''>File::TinyLock</span><span class=``operator''>;</span> <span class=``keyword''>my</span> <span class=``variable''>$file</span> <span class=``operator''>=</span> <span class=``keyword''>shift</span><span class=``operator''>;</span> <span class=``keyword''>unless</span><span class=``operator''>(</span><span class=``keyword''>defined</span><span class=``operator''>(</span><span class=``variable''>$file</span><span class=``operator''>)){</span> <span class=``keyword''>print</span> <span class=``string''>``file to lock: ''</span><span class=``operator''>;</span> <span class=``keyword''>chop</span><span class=``operator''>(</span><span class=``variable''>$file</span><span class=``operator''>=&lt;</span><span class=``variable''>STDIN</span><span class=``operator''>&gt;);</span> <span class=``operator''>}</span> <span class=``keyword''>my</span> <span class=``variable''>$result</span> <span class=``operator''>=</span> <span class=``variable''>File::TinyLock::lock</span><span class=``operator''>(</span><span class=``variable''>$file</span><span class=``operator''>);</span> <span class=``keyword''>if</span><span class=``operator''>(</span><span class=``variable''>$result</span><span class=``operator''>){</span> <span class=``keyword''>print</span> <span class=``string''>``Could not lock: ${result}\n''</span><span class=``operator''>;</span> <span class=``operator''>}</span><span class=``keyword''>else</span><span class=``operator''>{</span> <span class=``keyword''>print</span> <span class=``string''>``</span><span class=''variable``>$file</span><span class=''string``> is now locked\n''</span><span class=``operator''>;</span> <span class=``operator''>}</span>


        <span class="comment"># do stuff to file</span>
</pre>
<pre>
  <span class="keyword">if</span><span class="operator">(</span><span class="variable">$result</span> <span class="operator">=</span> <span class="variable">File::TinyLock::unlock</span><span class="operator">(</span><span class="variable">$file</span><span class="operator">)){</span>
    <span class="keyword">print</span> <span class="string">"could not unlock </span><span class="variable">$file</span><span class="string">: </span><span class="variable">$result</span><span class="string">\n"</span><span class="operator">;</span>
  <span class="operator">}</span>
  <span class="keyword">exit</span><span class="operator">;</span>
</pre>
<p>
</p>
<hr />
<h1><a name="caveats">CAVEATS</a></h1>
<p>This utility must be used by all code that works with the file you're
trying to lock.  Locking with <code>File::TinyLock</code> will not keep someone
from using vi and editing the file.</p>
<p>If you leave lock files around (from not unlocking the file before
your code exits), <code>File::TinyLock</code> will try its best to determine if the
lock files are stale or not.  This is best effort, and may yield
false positives.  For example, if your code was running as pid 1234
and exited without unlocking, stale detection may fail if there is
a new process running with pid 1234.</p>
<p>
</p>
<hr />
<h1><a name="restrictions">RESTRICTIONS</a></h1>
<p>Locking will only remain successfull while your code is active.  You
can not lock a file, let your code exit, and expect the file to remain
locked; doing so will result in stale lock files left behind.</p>
<p>lock file -&gt; do stuff -&gt; unlock file -&gt; exit;</p>
<p>
</p>
<hr />
<h1><a name="author">AUTHOR</a></h1>
<p>&lt;a href=&quot;http://jeremy.kister.net./&;quot;&gt;Jeremy Kister&lt;/a&gt;</p>

</body>

</html>

 /home/cpanrun/depot/main/contrib-patched/perl/CPAN/src/File-TinyLock/blib/html/site/lib/File/TinyLock.html