In very simple cases, such as this one, I use shared memory, or create a memory-backed directory:
sudo mkdir /var/memdir
Add the following line to the bottom of your /etc/fstab file (you'll need sudo to do this):
tmpfs /var/memdir tmpfs nodev,nosuid,size=1M 0 0
You've now created a directory, /var/memdir which only exists in memory (meaning it'll be wiped after reboot). It's only one megabyte, increase size as necessary.
Put your lock file in that directory. In simple cases, like the one you've got, I don't even write anything to the file, I just simply created it, then use exit if -e '/var/memdir/prog_name.lck';.
A more complete example:
my $lock = '/var/memdir/script.lock';
exit if -e $lock;
touch($lock); # dies on error by default
printf "Exists after create: %d\n", -e $lock // 0;
# do stuff
unlink $lock or die "Can't delete the damned lock file $lock: $!";
printf "Exists after delete: %d\n", -e $lock // 0;
spek@scelia ~/scratch $ perl script.pl
Exists after create: 1
Exists after delete: 0
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.
| & || & |
| < || < |
| > || > |
| [ || [ |
| ] || ] ||