Daemon no es demonio, pero así lo he visto mencionado harto en español así que dejemoslo en eso.
Estaba creando un pequeño servidor web en python (de hecho estaba utilizando BaseHTTPServer, así que no estaba haciendo el servidor en sí, sino el proveedor de contenido) porque necesitaba exportar un poco de información para otra aplicación, y no quería hacer que el server corriera un apache, pero mi programa se caía cada vez que cerraba el terminar, incluso cuando la corría con & para que se mantuviera en el fondo.
Finalmente encontré la solución en los internets, y resulta que el proceso no es tan simple como pensaba, pero no es díficil hacerlo (aunque todavía no entiendo porque es así). Para poder hacer que un demonio corra como tal, de forma independiente a tener una terminal hay que primero hacer un fork, cerrar el proceso original, intercambiar los file handlers por defecto para stdin, stdout y stderr por el filehandler de algún otro archivo, muy probablemente /dev/null, o el log del programa, utilizando dup2, y despues hacer un segundo fork (cerrando el programa original).
No entiendo porque el primer fork, pero funciona así.


