Probably your easiest way would be to create a sentinal that subsequent copies to check for. This could be as simple as an empty file or directory.

When the script runs, it checks for its existance, if its found, terminates with a warning. If not, it creates it and then deletes it when if finishes. The problem with this is that if the program terminates abnormally, it can leave the file/directory in situ and refuse to run again until it has been manually deleted. You might also use a registry entry for the same purpose but with the same potential problem. Removing the sentinel in an END{} block might help the cleanup problem, but I don't think it's guarenteed to run under all circumstances.

A better solution is to use something that automatically idsappears when the program terminates. Eg. Open a tcp or udp port and hold it open. This will disappear when the program terminates abnormaly. However, in some environments, you may fall foul of firewall restrictions.

Saving (what I think is) the best until last, you can create a named pipe Either locally, or at your domain server. This is a simple process to create and check for using Win32::Pipe which I believe came as standard with AS 5.6.1.

By creating this locally, you can prevent a 2nd copy running locally. By creating it at the domain controller, you could ensure only 1 copy in the domain.


Examine what is said, not who speaks.

The 7th Rule of perl club is -- pearl clubs are easily damaged. Use a diamond club instead.


In reply to Re: Determining if self is already running under WinNT/2000 by BrowserUk
in thread Determining if self is already running under WinNT/2000 by lrep

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.