http://www.perlmonks.org?node_id=945428


in reply to Perl / Apache 2 / Alarms

Let me see if I understand correctly:

You have a script that you want to launch some other scripts, then have it wait around a bit and then exit, right?

You need to fork off those other processes. The easy way to do that in unix is to stick a '&' at the end of the command. Using fork() and exec() is also a popular combination.

See perlfork & perlipc.

unix example:

system("ls -l > ls.out"); # you gonna have to wait system("ls -l > ls.out &"); # the command goes into the # background

fork & exec example

my $pid = fork; die "Fork failed me!\n" if !defined($pid); if ( $pid == 0 ) { # I'm the child! exec("ls -l > ls.out"); } # I'm the parent! sleep 5; #or whatever

Replies are listed 'Best First'.
Re^2: Perl / Apache 2 / Alarms
by Anonymous Monk on Dec 28, 2011 at 22:47 UTC
Re^2: Perl / Apache 2 / Alarms
by DanielSpaniel (Scribe) on Dec 29, 2011 at 01:16 UTC

    Thanks for the reply ... I'll clarify. After executing the scripts it should wait a maximum of x seconds, or until each script has completed if that is sooner, and then continue processing the original script - and then exit. That's why using alarms is useful.

    I thought that exec (as you've suggested) would simply replace the currently executing process, but I'm open to experimenting.

    However, I would prefer to get the existing code working if possible, since I know can work (first example). I'm just not certain I am implementing it correctly (second example) in my own code, and would like somebody more Perlish than myself to suggest/help with that if possible.

    Appreciate your comments though.