Think about a different approach. Windows is a painful environment, but it has an API for background processes. They are called services, and it is possible to write services in Perl. Services can be monitored easily and with a predefined API. No need to re-invent the wheel.

On a Unix system, I would (and do) use daemontools to run and monitor "background" processes, with much less pain. Should a process exit unexpectedly, daemontools will report that and restart the process (unless configured otherwise), thanks to SIGCHLD.

Windows has no signals, not even SIGCHLD, but you can (painfully) construct similar mechanisms, typically using atoms, semaphores, and other API functions not originally intended to do so.

The important trick in both cases is that the script starter does not exit, but keeps track of its child processes. With daemontools, you don't even start the child process, but instead tell the monitor to start (or stop or signal) the script. This is very similar to how Windows Services behave.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)

In reply to Re: Use another script to check bacground process by afoken
in thread Use another script to check bacground process by Anonymous Monk

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.