Daemons and Services/pt

From Lazarus wiki
Revision as of 17:08, 18 December 2007 by Aliotti (talk | contribs) (New page: =O que são daemons e services ?= Unix daemons e windows services são programas rodando sem interação do usuário. Por exempo servidores www ou ftp são chamados de daemons sob linux e...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

O que são daemons e services ?

Unix daemons e windows services são programas rodando sem interação do usuário. Por exempo servidores www ou ftp são chamados de daemons sob linux e serviços sob windows. Por que eles não interage com o usuário diretamente, eles fecham seus stdin, stdout, stderr descritores quando iniciam.

Com Free Pascal, Lazarus é possível escrever estes daemons/services independente de plataforma através do pacote lazdaemon. Para evitar conflitos de nome com os componentes Delphi os componentes desta classe são chamadas de 'daemons'.

Classes

TCustomDaemon

Este é um descendente do TDataModule que habilita todo o trabalho. Este pode ter diversas classes TCustomDaemons e/ou instâncias executando ao mesmo tempo e no mesmo processo(multi threaded).

TCustomDaemonApplication

Este é um descendente da TCustomApplication que cria os TCustomDaemons. Este não precisa de mudanças. Ele executa sob Windows até receber a chamada de Stop(parada) ou sob linux até receber o sinal TERM.

TDaemonMapper

Este componente é encarregado do registro do serviço. Cada instância precisa de uma entrada na propriedade DaemonsDefs.

Daemon - Passo a Passo

  • Quando o daemon é inicializado os comandos da linha de comando são traduzidos. Os seguintes são pré-definidos:
    • -i --install: registra o daemon. Tem nenhum efeito sob unix.
    • -u --uninstall: remove o daemon. Tem nenhum efeito sob unix.
    • -r --run: inicia o daemon. Windows faz isto normalmente ele mesmo.
  • Criar o TDaemonMapper
  • Criar um TCustomDaemon para cada entrada do DaemonDefs.
  • instalar, remover ou executar cada instância.
  • se executar: inicializar cada instância na sua própria thread e então aguardar pelo sinal de STOP/TERM.