On Friday, April 26, 2002, at 09:40 , Alex Read wrote:

> Hello,
>
> OK, we now have the following;
>
> #!/usr/bin/perl
> use strict;
>
> my $pid = fork;
> if ($pid == 0){
> exec 'sleep 2; echo "hi"' ||  die "Cannot sleep: $!" ;
> } else {
> print "Content-type: text/html\n\n<html>";
> print "\nhi\n\n</html>\n\n";
> }
>
> So the child process is the only one that sleeps for 2, then prints hi, 
> and
> the parent prints Content-type etc., and on the command line thats exactly
> what it does.  I get Content-type etc. straight  away, the two seconds 
> later
> I get hi.  But, when I run this as a cgi script my browser hangs for 2
> seconds and then prints hi hi.

three sets of concerns:

p0: the exec there is still attached to 'STDOUT' - hence
STDOUT remains open for 2 seconds - even if the Initial
print to the buffer STDOUT by the parent occured already.

p1: $| = 1; would turn buffering off
{ but I am not sure what the browser would do with getting
the non-html stuff from the child }

p2: having the child need to communicate with the browser
over the same STDOUT - can get messy.... as you are starting
to notice.... and would be time to rethink the design here...



ciao
drieux

---


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to