O "Processo CGI" de que você fala é o programa CGI. O programa CGI pode ser um script em qualquer idioma ou um executável compilado.
Os detalhes de como o sistema operacional realmente executa o código do programa CGI (seus passos 2, 3, 4 e 5) não são realmente necessários para entender como o CGI funciona.
É assim que penso nisso (seus passos 2-5 são compactados na etapa 2 aqui):
- O Apache recebe uma solicitação - vê que é uma solicitação para um programa CGI
- O Apache executa o programa CGI, passando os parâmetros da solicitação para o programa CGI no ambiente (como variáveis de ambiente).
- O programa CGI obtém os parâmetros do ambiente, realiza qualquer processamento necessário e grava a página da web na saída padrão.
- O Apache recebe a página da Web da saída padrão do programa CGI e a transmite para o cliente da Web (geralmente seu navegador da Web).
A maioria dos detalhes discutidos nas suas etapas 2-5 é abordada na página execve
man (no Linux há exemplos de código de trabalho): man 2 execve
. Você também pode querer olhar para fork
. Isso está ficando fora do tópico de CGI e no tópico do modelo de processo Unix. Melhor para outra pergunta depois.
Para uma descrição precisa e detalhada do CGI, consulte o esboço da especificação da Internet: O WWW Common Gateway Interface Versão 1.1
Veja também Tutorial do Apache: conteúdo dinâmico com CGI