> I better explain my problem. :)
> I have a CGI for Apache. I wrote it in C, and it simply parses text
> from a html textarea, giving another html in output. I made it as a
> state machine which outputs and outputs according to the input
> characters.
> 
> Apache communicates with the CGI process with two pipes linked to the
> process' stdin and stdout.
> But I think that apache code is like this:
> while()
> {
>   read(socket,buffer)
>   write(pipe_process1, buffer)
> }
> while()
> {
>   read(pipe_process2, buffer)
>   write(socket,buffer)
> }
> 
> Therefore, if I had a CGI similar to 'cat' (and I have), it would
> deadlock due to the pipe_process2 not being read by apache if it gets
> filled, the process blocks, and then pipe_process1 gets filled.

no, you wouldn't.

i believe the problem is the cgi and apache disagree on the termination
condition.  make sure you close the fd 0 when you are done reading.

- erik

Reply via email to