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

Hi Fellow monks, I seek your wisdom in solving this problem i have, hehe. I'm have a first script running and i want to add on a call to a second script which does heavy processing which takes up a lot of time. But i want the first script to end when it's done and not to wait for the second script. I've googled up for fork and multi threading, but i still don't have any clear idea on how to do this. Can this be done? ~thanks in advance~

Replies are listed 'Best First'.
Re: How to run a 2nd script in background?
by jwkrahn (Abbot) on Jan 03, 2008 at 03:23 UTC
Re: How to run a 2nd script in background?
by jonnyfolk (Vicar) on Jan 03, 2008 at 05:44 UTC
    Here's one way:
    #run script.pl as child process my $pid; my $script = '/myroot/public_html/cgi-bin/script.pl'; if ($pid = fork) { #do something } elsif (defined $pid) { close STDOUT; system $script; } else { die "Major error: $!"; }
      Using system creates another process, exec is more appropriate here.

      If you are running on Windows you should be aware that fork creates a new thread, not a new process (fork is UNIX architecture). Also (on Windows) to run a script you should prefix the script name with 'perl', since file extension association is done at application, not OS, level. See also Win32::Process and Win32::FetchCommand.