#!/usr/bin/perl
use strict;
use warnings;
use CGI qw(:standard);
print header, start_html(-title=>'fork test',);
print "Parent start at " . localtime() . "
\n";
print STDERR "Parent start at " . localtime() . "\n";
if(my $pid = fork()) {
sleep(5);
print "Parent forking at " . localtime() . "
\n";
print STDERR "Parent forking at " . localtime() . "\n";
wait();
} else {
print "First child at " . localtime() . "
\n";
print STDERR "First child at " . localtime() . "\n";
exit(0);
}
if(my $pid = fork()) {
print "Parent forking again at " . localtime() . "
\n";
print STDERR "Parent forking again at " . localtime() . "\n";
} else {
sleep(50);
print "Second child at " . localtime() . "
\n";
print STDERR "Second child at " . localtime() . "\n";
close(STDOUT);
sleep(50);
print STDERR "Second child after STDOUT close at " . localtime() . "\n";
exit(0);
}
print end_html;
print "Parent exiting at " . localtime() . "
\n";
print STDERR "Parent exiting at " . localtime() . "\n";
exit(0);