[fpc-devel] How to use fpFlock?
amir
amir at aavani.net
Tue May 6 09:21:57 CEST 2008
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 given file at a given time.
>
> LOCK_EX Place an exclusive lock. Only one process may
> hold an exclusive lock for a given file at a given time.
>
> LOCK_UN Remove an existing lock held by this process.
>
> Ido
>
> On Tue, May 6, 2008 at 9:38 AM, amir <amir at aavani.net> wrote:
>
>> 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);
>> WriteLn ('After Flock');
>> Flush (Output);
>>
>> Reset (InputFile);
>> ReadLn;
>>
>> CloseFile (InputFile);
>>
>> end.
>>
>>
>>
>> ik wrote:
>>
>>
>>> 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
>>> file.
>>> You of course remove it when you closed the file.
>>>
>>> Just an idea...
>>>
>>> Ido
>>>
>>> On Fri, May 2, 2008 at 5:35 AM, amir <amir at aavani.net> wrote:
>>>
>>>
>>>
>>>> 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. Is it
>>>> possible? What I done is something like this:
>>>>
>>>> AssignFile (OutputFile, FileName);
>>>> fpflock (OutputFile, LOCK_EX);
>>>> Rewrite (OutputFile);
>>>> ...
>>>>
>>>> The description of fpFlock does not say anything about the default
>>>> behavior of fpFlock (Is it blocking?). What I saw told me that it is not
>>>> blocking.
>>>>
>>>> Is it the correct way of using fpFlock?
>>>>
>>>>
>>>> _______________________________________________
>>>> fpc-devel maillist - fpc-devel at lists.freepascal.org
>>>> http://lists.freepascal.org/mailman/listinfo/fpc-devel
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>>
>> _______________________________________________
>> fpc-devel maillist - fpc-devel at lists.freepascal.org
>> http://lists.freepascal.org/mailman/listinfo/fpc-devel
>>
>>
>
>
>
>
More information about the fpc-devel
mailing list