View Full Version : Exec command running in background after a fork

05-21-2009, 06:13 PM
Hi All,

How can i make the code below to run in background (windows xp) until the command ends?

The command is similar to "perl main.pl a b c d e". If i put this command at #child place, the script (main.pl) runs until it terminates but the html page (#parent place) is only loaded after the script ends. I want to display the html page as soon as the script starts.

If i change the code between #child and #parent fields, the html is displayed instantly but the script (main.pl) is killed and is not executed to the end.

use warnings;
use strict;

$| = 1; # need either this or to explicitly flush stdout, etc.
# before forking
print "Content-type: text/plain\n\n";
print "Going to start the fork now\n";
if ( !defined(my $pid = fork())) {
print STDERR "fork error\n";
} elsif ($pid == 0) {
# child
exec('perl main.pl a b c d e'); # lengthy processing
} else {
# parent
print "forked child \$pid= $pid\n";
exit 0;

This script main.pl takes at least 5 minutes running. This is the reason that i can't wait the script terminates.