Furthermore, you have a problem if the program dies and doesn't get the chance to clean up the special file.
Can be handled by either an exit handler
But they aren't always called, are they? The OS may crash. Something could kill it with SIGKILL. The application may exec.
checking to see if the program is already running.

Write and/or exclusive locks handle this.

So, now we're down to using external files, exit handlers, checking the process table, and using locks (which doesn't prevent a rm of the file).
Even if it is not how you would do it (possibly for a full blown application), it may well fit the bill for this task.
Or it may not. It sure ain't any simpler than
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.


In reply to Re^4: how to exit if tool is already running by JavaFan
in thread how to exit if tool is already running by srikrishnan

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • 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:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, 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, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.