Controlling Concurrent Runs with Perl
Sometimes you have a program that can't be run by more than one person, or one that must run frequently but you don't know for sure how long an instance of it will take.
One way to accomplish that is to use a lock file.
#!/usr/bin/perl5
open(CNT, "/tmp/mylockfile");
flock CNT,2;
# program hangs here until other instance is done
# .. other processing when it is free
# release the lock
flock CNT,8;
close CNT;
If an instance is running, another instance will be stopped at the "flock CNT,2;" line and won't continue until the first program executes "flock CNT,8;".
But what if you don't want to just hang? An easy way to do that is to write your PID to a file:
#!/usr/bin/perl
open (L, "/tmp/mypid.lock");
$pid=;
close L;
$stat=kill 0, $pid ;
chomp $stat;
chomp $pid;
if ($stat and $pid) {
print "\nExiting because $pid exists\n";
exit 1;
}
open (L, ">/tmp/mypid.lock");
print L "$$\n";
close L;
.. other code
The "kill 0" actually doesn't even send a signal; it just checks to see if the process exists. If it does, we print a message and exit; otherwise the code continues.
These are two simple ways to control program execution with Perl.
*Originally published at APLawrence.com
A.P. Lawrence provides SCO Unix and Linux consulting services http://www.pcunix.com
Search Bing From Hotmail Inbox to Insert ContentBing Added to Quick Add Feature
-

Real-Time Search Engines Rush to Fill New Need
Twitter has produced a hot new trend: real-time search. -

Google's OS to Challenge Microsoft?
Googlers Sundar Pichai and Linus Upson announced on Wednesday that... -

Is Twitter Scaring Google?
There have been multiple reports that Twitter could replace Google. -

User Authentication Services: Good or Bad?
Products such as OpenID, Facebook Connect, and Google Friend Connect...
WWDC Demo: two tip calculators The Unofficial Apple...
Fidelity doubles stake in... Seattle Times
How To: Excel At Excel For SEM... Search Engine Land
Forecaster of the Month:... MarketWatch
iEntry 10th Anniversary
RSS
Newsletter
Advertising











Comments
Post new comment