in reply to Re: How do I determine if my script is already running?
in thread How do I determine if my script is already running?

Perl's signal handling is unreliable. I do not believe that you need to catch signals or do any cleanup. My understanding is that the OS is responsible for flock. If your process is terminated unexpectedly, the OS is responsible for noting that your filehandles are now closed and your locks are ended.

If anyone has any documentation to the contrary, please show me. Also a failure script would be of interest. I am currently relying on this behaviour in production and if it is unreliable, I would really like to know. In the meantime you can take the low-tech approach and run the following script from multiple xterms while trying to create a problem...

use Fcntl qw(:flock); my $file = "my.lock"; open(FOO, ">> $file") or die "Cannot write to $file: $!"; print "Getting the lock\n"; flock (FOO, LOCK_EX) or die "Cannot flock $file: $!"; print "Locked by $$, hit enter to exit: "; <STDIN>;
At least on Linux I am unable to get this to act in anything other than the expected manner...

Replies are listed 'Best First'.
Re: Re (tilly) 2: How do I determine if my script is already running?
by McD (Chaplain) on Feb 19, 2001 at 21:56 UTC
    If your process is terminated unexpectedly, the OS is responsible for noting that your filehandles are now closed and your locks are ended.

    FWIW, Stevens agress with you in Advanced Programming In The Unix Environment.

    Of course, YMMV.

    Peace,
    -McD