You need to fork a child process to run the background job, so the parent can send the redirection and terminate normally. Also, you'll need to close (or redirect to a file) STDOUT and STDERR in the child before the exec(), so the webserver will not wait for the pipes to the child (duplicated by the fork) to get closed.
Update: something like this:
my $pid = fork(); die "Couldn't fork: $!" unless defined $pid; if ($pid) { # parent print "Location: $outpage_url\n\n"; } else { # $pid == 0 # child open STDOUT, ">>", "/path/to/some/logfile" or warn "Couldn't redir +ect STDOUT: $!"; open STDERR, ">>", "/path/to/some/logfile" or warn "Couldn't redir +ect STDERR: $!"; exec "$bin/somescript.pl"; exit; # just in case the exec failed }
In reply to Re: How to open redirected url while running foolwing code in background
by almut
in thread How to open redirected url while running foolwing code in background
by Prat824
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |