On Thu, 12 Jan 2006, Bertram Scharpf wrote:

>> it's not needed.  also, since getting a lock releases ALL other locks on the
>> file this needs to throw an error
>>
>>   open(path,"r+") do |f|
>>     f.flock(File::LOCK_EX) do
>>       f.flock(File::LOCK_SH) do
>>         # we don't have the lock here, error should be raised!
>>       end
>>     end
>>   end
>
> As there's no use of nested locking it should be inhibited
> at all.

well...  i'm not sure that's quite true.  the example above could be quite
well intended to downgrade a write lock to a read lock...  so it's unclear
whether it should warn or raise... probably raise is best.  and i think the
forking issue is basically unsolvable since flock, unlike fcntl, provides no
mechanism for checking which pid holds a lock...

> Admittedly, file locking and all of that partially file locking is not
> actually the most convincing feature of Un*x ...

yes.  i use posixlock in all my stuff - it's 2% better and safe on all fs.

>> strong and healthy, who thinks of sickness until it strikes like lightning?
>> preoccupied with the world, who thinks of death, until it arrives like
>> thunder?  -- milarepa
>
> jc did.

ok - i haven't drank my coffee yet - who is jc?

-a
-- 
strong and healthy, who thinks of sickness until it strikes like lightning?
preoccupied with the world, who thinks of death, until it arrives like
thunder?  -- milarepa