On Sat, Nov 27, 2004 at 08:06:40AM -0500, Paul Tomblin wrote: > On Fri, 26 Nov 2004 22:49:51 -0600, Ed Wilts <ewilts@xxxxxxxxxx> wrote: > > > use FileHandle; > > use Fcntl qw(:DEFAULT :flock); > > my $FH = new FileHandle; > > sysopen(FH, "ftphandler.lock", O_RDWR | O_CREAT) or die "can't open ftphandler.lock: $!"; > > flock(FH, LOCK_EX | LOCK_NB) or exit; > > print "running...\n"; > > [rest of code here] > > close (FH); > > unlink ("ftphandler.lock"); > > Two things I see off the top of my head: > - O_RDWR|O_CREAT won't fail if the file already exists. How does this > stop people from running it twice if the secon one starts up before > the first one has time to flock it? Wouldn't you be better off using > O_EXCL|O_CREAT? The condition I need to test for is the possibility of a cron job starting a second copy before the first completes. Since the granularity of cron jobs is to the minute, this isn't a problem for me. The users that are running these cron jobs don't have interactive access to run the script. > - Beware of using flock (or O_CREAT) on NFS mounted file systems. Yup, that's in the Perl FAQ too. Not an issue for me. Thanks, .../Ed -- Ed Wilts, RHCE Mounds View, MN, USA mailto:ewilts@xxxxxxxxxx Member #1, Red Hat Community Ambassador Program