Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>If you end up using flock, here's some code to do it:</p> <pre><code>use Fcntl ':flock'; # Import LOCK_* constants # We will use this file path in error messages and function calls. # Don't type it out more than once in your code. Use a variable. my $file = '/path/to/some/file'; # Open the file for appending. Note the file path is quoted # in the error message. This helps debug situations where you # have a stray space at the start or end of the path. open(my $fh, '&gt;&gt;', $file) or die "Could not open '$file' - $!"; # Get exclusive lock (will block until it does) flock($fh, LOCK_EX) or die "Could not lock '$file' - $!"; # Do something with the file here... # Do NOT use flock() to unlock the file if you wrote to the # file in the "do something" section above. This could create # a race condition. The close() call below will unlock the # file for you, but only after writing any buffered data. # In a world of buffered i/o, some or all of your data may not # be written until close() completes. Always, always, ALWAYS # check the return value of close() if you wrote to the file! close($fh) or die "Could not write '$file' - $!"; </code></pre> <p>Some useful links:</p> <ul> <li><a href="http://www.perlmonks.org/?node_id=7058" rel="noreferrer">PerlMonks file locking tutorial</a> (somewhat old)</li> <li><a href="http://perldoc.perl.org/functions/flock.html" rel="noreferrer"><code>flock()</code> documentation</a></li> </ul> <p>In response to your added question, I'd say either place the lock on the file or create a file that you call 'lock' whenever the file is locked and delete it when it is no longer locked (and then make sure your programs obey those semantics).</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload