Esta seção explica como executar o servidor como daemon (processo em segundo plano).
Para executar o servidor como daemon, use a flag -b:
./bin/server -bCom esta flag, o servidor se desconecta imediatamente do terminal controlador e executa em segundo plano. Você recupera o prompt do shell e o processo continua executando.
O processo de daemonização segue convenções Unix padrão para garantir que o processo seja adequadamente desconectado:
- Primeiro Fork: O processo principal faz fork e o processo pai sai imediatamente, retornando controle ao shell
- Nova Sessão: O processo filho chama
setsid()para criar nova sessão e grupo de processos, tornando-se líder da sessão e desconectando-se do terminal controlador - Segundo Fork: O processo faz fork novamente e o pai (líder da sessão) sai. Isso garante que o daemon não seja líder de sessão e não possa readquirir um terminal controlador
- Mudar Diretório: Mantém o diretório de trabalho atual para preservar caminhos relativos
- Definir Máscara de Arquivo:
umask(0)é chamado para garantir que arquivos criados pelo daemon tenham as permissões desejadas - Fechar Descritores: Todos os descritores de arquivo abertos herdados do pai são fechados, incluindo
stdin,stdoutestderr
O servidor daemon:
- Exibe PID: Mostra o PID correto no terminal durante a inicialização
- Arquivo PID: Cria
server.pidno diretório atual com o PID do processo - Sincronização: O PID exibido e o arquivo são idênticos e funcionais
Use o PID exibido na inicialização ou o arquivo PID:
# Usando arquivo PID (recomendado)
kill $(cat server.pid)
# Encontrando manualmente
ps aux | grep server
kill <PID>O daemon responde a sinais SIGTERM e SIGINT, limpando recursos e removendo o arquivo PID.
<- Anterior: Funcionalidades | Próximo: Estrutura do Projeto ->