Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
daemon [d/mY H:i]
laureano
daemon [d/mY H:i] (atual)
laureano
Linha 12: Linha 12:
 Para se codificar um daemon deve-se realizar uma série de tarefas e chamadas de funções para que o processo se comporte como um ''​daemon'':​ Para se codificar um daemon deve-se realizar uma série de tarefas e chamadas de funções para que o processo se comporte como um ''​daemon'':​
  
-   * A primeira coisa a fazer no processo é chamar a função [[fork]] para duplicar o processo atual e terminar o processo pai. Assim, o término do processo pai libera o shell, pois o mesmo acha que o comando terminou. O processo filho herda o Process Group ID do pai mas cria um novo Process ID, garantindo que este processo não será um processo líder de grupo. ​Este processo deve ocorrer 2 vezes, pois algum evento futuro poderá ligar um terminal ao processo ''​daemon''​.+   * A primeira coisa a fazer no processo é chamar a função [[fork]] para duplicar o processo atual e terminar o processo pai. Assim, o término do processo pai libera o shell, pois o mesmo acha que o comando terminou. O processo filho herda o Process Group ID do pai mas cria um novo Process ID, garantindo que este processo não será um processo líder de grupo. ​ 
   * Deve-se chamar a função [[setsid]] para criar uma nova sessão. Com a criação de uma nova sessão, o processo filho torna-se o líder da sessão, torna-se o líder do grupo de processos e não irá possuir um terminal de controle.   * Deve-se chamar a função [[setsid]] para criar uma nova sessão. Com a criação de uma nova sessão, o processo filho torna-se o líder da sessão, torna-se o líder do grupo de processos e não irá possuir um terminal de controle.
 +  * Em sistemas baseados no Unix //System V//, deve-se realizar o [[fork]] novamente, pois algum evento futuro poderá ligar um terminal ao processo ''​daemon''​.
   * Deve-se trocar o diretório atual para o diretório raiz ou para um diretório específico. Este diretório preferencialmente não deve ser um diretório montado depois do processo de boot.    * Deve-se trocar o diretório atual para o diretório raiz ou para um diretório específico. Este diretório preferencialmente não deve ser um diretório montado depois do processo de boot. 
   * Deve-se mudar a máscara de criação do processo para **''​0''​** usando a função [[umask]]. Isto possibilita o processo ''​daemon''​ criar arquivos com a permissão desejada. Caso não se chame esta função, pode ser que o processo ''​daemon''​ herde alguma máscara que esteja desabilitando alguma permissão necessária para o funcionamento do daemon.   * Deve-se mudar a máscara de criação do processo para **''​0''​** usando a função [[umask]]. Isto possibilita o processo ''​daemon''​ criar arquivos com a permissão desejada. Caso não se chame esta função, pode ser que o processo ''​daemon''​ herde alguma máscara que esteja desabilitando alguma permissão necessária para o funcionamento do daemon.
Linha 19: Linha 20:
   * Deve-se associar a ''​entrada padrão'',​ ''​saída padrão''​ e ''​saída de erro padrão''​ para ''/​dev/​null''​. Assim, caso algum evento ocorra, o sistema operacional irá descartar.   * Deve-se associar a ''​entrada padrão'',​ ''​saída padrão''​ e ''​saída de erro padrão''​ para ''/​dev/​null''​. Assim, caso algum evento ocorra, o sistema operacional irá descartar.
   * Caso durante a vida do processo daemon ele precise ler algum arquivo de configuração ou mudar sua configuração interna, deve-se instalar um [[sinal|signal handler]] para o [[sinal|sinal SIGHUP]], pois como o processo está desconectado de qualquer terminal ele naturalmente nunca receberá este sinal do sistema operacional.   * Caso durante a vida do processo daemon ele precise ler algum arquivo de configuração ou mudar sua configuração interna, deve-se instalar um [[sinal|signal handler]] para o [[sinal|sinal SIGHUP]], pois como o processo está desconectado de qualquer terminal ele naturalmente nunca receberá este sinal do sistema operacional.
 +
 +===== Funções =====
 +  * [[setsid]]
 +  * [[syslog]]
 + 
  
 ===== Exemplo completo ===== ===== Exemplo completo =====
daemon.txt · Última modificação: d/mY H:i por laureano
CC Attribution-Noncommercial-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0