> 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