http://qs321.pair.com?node_id=565820

beretboy has asked for the wisdom of the Perl Monks concerning the following question:

I have written a perl script to do some fairly lengthy operations at boot up via the Windows XP scheduled tasks daemon. This will be running in a computer lab, and I don't want users to close the terminal window that currently pops up on boot. How can I run my script in the background, preventing it from opening a command prompt window?


"Sanity is the playground of the unimaginative" -Unknown

Replies are listed 'Best First'.
Re: Backgrounding a scheduled task
by Corion (Patriarch) on Aug 05, 2006 at 22:00 UTC

    Start it with wperl.exe instead of perl.exe, assuming that you have ActiveState Perl.

    Your users still can kill this task via the task manager or other programs if they have the according privileges. You should consider running your programs as a different user than the logged on user if you want to prevent that.

      Iam using ActiveState, and I actually tried the wperl suggestion (someone told me earlier in the CB) and it doesn't seem to work. I get a "Could not start" message when I schedule the following task: wperl C:\bootscript\bootscript.pl Thanks for reminding me to run this as a different user, I've done that now.


      "Sanity is the playground of the unimaginative" -Unknown

        Perhaps a silly question, but is wperl.exe on the path and accessable to the user?


        DWIM is Perl's answer to Gödel
Re: Backgrounding a scheduled task
by GrandFather (Saint) on Aug 05, 2006 at 23:27 UTC
Re: Backgrounding a scheduled task
by sgifford (Prior) on Aug 06, 2006 at 14:28 UTC
    You could try having a very small perl script which simply ran:
    system(1,"/path/to/real/script.pl");
    On Windows, the leading 1 should cause the script to run in the background, and your foreground script can immediately exit. Untested, but worth a try anyways...