perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Charles Day <>
Subject RE: fork/CGI/Apache problem
Date Fri, 02 Nov 2001 14:53:36 GMT
You script only printed once for me.

Here's a shortened version I use:

....parent stuff above

defined($pid = fork) or die "cannot fork: $!\n";
exit if $pid;
close (STDOUT);

...child stuff below

-----Original Message-----
From: Marco Kleefman []
Sent: Friday, November 02, 2001 8:30 AM
Subject: fork/CGI/Apache problem

Hello everybody,

I am new to the list. I have a question I hope you can help me with. It is
not a modperl question, just a normal perl question related to Apache/CGI.

I have this script which forks off a process which does something. I already
encountered the problem of my browser waiting for the child to be finished.
I solved it by closing STDIN/OUT/ERR. But I still have another problem...
Somehow all print statements in my script which occur before the fork-part
of the script are printed twice! I have tried to unbuffer STDOUT, but no
luck until now...

Here's my script:

#! /usr/bin/perl
print "start: pid=$$\n"; # this line gets printed twice!
print "Content-type: text/html\n\n"; # this line gets printed twice!

if (!defined ($pid = fork))
    die "Unable to fork: $!\n";
elsif (! $pid)
    warn "child: pid=$$\n";

    # this is the branch for the child process
    close(STDIN); close(STDOUT); close(STDERR);
    sleep(60); # pause for 1 minute
     exit; # terminate the child process
{	# this is the branch for the parent
    warn "parent: pid=$$ (child=$pid)\n";
    ...print some HTML code....
    exit; # terminate the parent process

Best regards,

The Netherlands

PS I have searched 30 pages of old messages related to forking, but no luck
there! Still I have the feeling that my problem is something trivial... :(

View raw message