flock in Linux (at least) is blocking by default unless passed with
specific parameter.
You can try also to create a mutex that only when removed you will
access the procedure/function that try to write to the file, and the
process that created the mutex is the only one that can write to that
So what wrong is with the following code?
When running two instance of this program, *both* print After Flock
and wait for an input?
uses
Unix;
var
InputFile: TextFile;
begin
AssignFile (InputFile, 'Lock.txt');
WriteLn ('Before Flock');
Flush (Output);
Fpflock (InputFile, LOCK_SH);
You should use LOCK_EX instead (exclusive lock rather then shared lock).
From the man file (man 2 flock):
LOCK_SH Place a shared lock. More than one process
may hold a shared lock for a given file at a given time.
LOCK_EX Place an exclusive lock. Only one
I have tried both of them (LOCK_SH and LOCK_EX). But the result was the
same.
ik wrote:
You should use LOCK_EX instead (exclusive lock rather then shared lock).
From the man file (man 2 flock):
LOCK_SH Place a shared lock. More than one process
may hold a shared lock for a
Hi,
I have many process wanting to write in a file. Each process is going to
open the file as a writeonly (using Assignfile and rewrite or fpOpen
with o_WrOnly). But there is a risk that two processes simultaneously
trying to write a message in the file. I want to use fpflock to avoid
this.