Normalmente daemons garfo duplo ou triplo e os pais saem. Quando um daemon é iniciado em bg, o shell não interativo não espera que o primeiro fork saia. E porque não tem nada para fazer, sai imediatamente. Isso pode acelerar um pouco. Eu não penso em nenhuma conseqüência ruim disso se você tiver certeza de que o daemon não falhará.
Para acabar com um fork e, consequentemente, acelerar, ele pode ser 'exec'd como exec daemon
. Mas 'bg' e 'exec' não podem obter o valor de retorno do daemon.
No momento em que 'init' ou algum agente gerado pelo init foi descoberto por alguma mágica de shell, o próximo script de inicialização para executar e clonar-se para exec 'o próximo init scritp' e a família de funções exec [lv] * encontrou #! e executar o interpretador com 'o próximo script de inicialização' como seus argumentos e o interpretador analisou e executou 'o próximo script de inicialização' até iniciar o próximo daemon com kernel agarrando tempo de CPU intermitentemente ..., o primeiro daemon teria iniciado .
A primeira bifurcação de algum daemon não tem nada a ver exceto verificar a saída do segundo syscall 'fork' e sair. Outros podem fechar abrir 'fd's e abrir / dev / null em 0,1 e 2 no primeiro fork do que no adiamento. Alguns benchmarking podem revelar desempenho.