The easiest is to check for the existence of a special file on a start-up if the file not exists create a temporary file and delete this file after the script has finished.
That's not easy at all. In fact, if you do it as you state, you have a solution with a race condition, as you aren't doing the "check if a file exists; create it otherwise" atomically. Furthermore, you have a problem if the program dies and doesn't get the chance to clean up the special file. Or if something else removes the file.
| [reply] |
| [reply] |
use Fcntl ':flock';
flock DATA, LOCK_EX|LOCK_UN or exit;
which doesn't require exit handlers, external files, does the right thing when the program exits unexpectedly, and doesn't have to check to process table.
Now, I'm not claiming it isn't possible. I'm disagreeing with you that it's the easiest solution. Self-locking is easier than external locking. | [reply] [d/l] |