Bonjour,
J'ai fait un petit programme basé sur du code GPL qui a plein de jolies gestions des erreurs, avec des logs redirigés vers stderr.
Tout va bien jusque là, je fait mes modifs du code, et mon programme ayant pour but de tourner H24, de lire des données régulièrement et de les transformer, je me dit, "tiens je vais passer mon code en daemon".
Je regarde les docs pour faire un daemon, ça marche grosso modo.
Sauf que, toutes les erreurs passent à la trappe.
Pour la partie purement daemon, je log via syslog genre "syslog(LOG_WARNING, "daemon received SIGTERM signal." );" , mais pour les erreurs déjà gérées par le code "ancien" j'ai plus rien qui sort.
En cause :
Code :
- for (i=getdtablesize();i>=0;--i) close(i); /* close all descriptors */
- i=open("/dev/null",O_RDWR); dup(i); dup(i); /* handle standart I/O */
|
Et je me demande, pourquoi faut-il obligatoirement rediriger vers /dev/null. Si je redirige vers un fichier log, c'est mal(voire vers syslog, mais je pense pas que ça soit possible)?
Partout, je lis, il faut fermer ces descriptor, c'est le mal etc. Il y a une raison? Car oui voir la sortie standard du daemon dans le shell c'est merdique, quand on ferme le shell je n'ose imaginer ce qui se passe, mais si je mets ça dans un fichier, ça gène quoi/qui?
Merci
---------------
I guess my real ennemy is me