Tudo o que você precisa saber sobre Daemons
Enviado por Daniel de Oliveira Mantovani (daniel·oliveira·mantoaniΘgmail·com):
“Você já parou para pensar como um daemon funciona nas suas entranhas ? Pois é no artigo “Divertindo-se com Daemons” o autor mostra de forma clara e subjetiva como funciona um daemon por dentro, além de mostrar passo à passo como você pode criar o seu próprio daemon, tanto conceitualmente como na prática. “Nesse artigo você irá aprender a criar daemons. Acredito que ficará contente em saber que essa é uma tarefa bem simples, na verdade.
O termo “daemon” foi cunhado pelos programadores do “Projeto MAC”, do MIT, baseando-se no Demônio de Maxwell, um ser imaginário que realiza tarefas sem ser visto. O termo é derivado da palavra grega daimon que significa “ser sobrenatural”, “espírito”. Mais tarde, algumas pessoas tentaram definir o termo como um acrônimo para “Disk And Execution MONitor…”” [referência: sao-paulo.pm.org]
• Publicado por Augusto Campos em
2011-03-17
Muito bom o artigo, mas existe um erro bem grande aí, que é dizer que redirecionar para /dev/null é fechar o arquivo. Não é. Com o fechamento do arquivo, seu descritor fica inválido para leitura ou escrita, enquanto que redirecionado para /dev/null ele simplesmente não dá nenhum erro.
Em shell script, redirecionar para /dev/null é feito assim:
[patola@ubuntola /tmp]% ls > /dev/null
[patola@ubuntola /tmp]%
Fechar o descritor é feito com o >&-:
[patola@ubuntola /tmp]% ls >&-
ls: erro de gravação: Descritor de arquivo inválido
[patola@ubuntola /tmp]%
Como dá pra perceber, o ls dá erro por não conseguir escrever no descritor de arquivo fechado. Então, nesse programa perl, fechar o descritor seria usar o comando close para STDIN, STDOUT e STDERR mesmo.
Olá Patola, fechar os descritores padrões não é exatamente fazer um “close” neles, isso seria errado. Porque se você estiver utilizando um módulo e esse módulo “gritar um warning” você receberá um erro dizendo que o módulo não conseguiu escrever no descritor STDERR, isso seria um desastre e você nunca conseguiria debugar o seu programa.
Quando eu digo fechar os descritores padrões, é mais de uma forma “subjetiva”, como por exemplo redireciona-los para um arquivo de log. Eu quero que fique claro, é que você não pode deixar os seus descritores padrões escreverem na shell, pois como um daemon não é atrelado a nenhuma shell você nunca veria o erro, ah não ser que fosse da shell que você rodou ele.
Basicamente o que sei sobre daemons é que, estando com a minha agua bemta e crucifixo na mão, nenhum deles chega perto…. hauahau