Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Programación de un demonio - muere al cerrar la consola [SOLUCIONADO]

Estas en el tema de Programación de un demonio - muere al cerrar la consola [SOLUCIONADO] en el foro de C/C++ en Foros del Web. Hola a tod@s: Lo primero saludar a los miembros de la comunidad, ya que soy nuevo en el foro. Y aquí va mi pregunta: Estoy ...
  #1 (permalink)  
Antiguo 30/04/2010, 06:30
 
Fecha de Ingreso: abril-2010
Mensajes: 1
Antigüedad: 14 años
Puntos: 0
Programación de un demonio - muere al cerrar la consola [SOLUCIONADO]

Hola a tod@s:

Lo primero saludar a los miembros de la comunidad, ya que soy nuevo en el foro.

Y aquí va mi pregunta:

Estoy realizando un programa en c/c++ para Ubuntu y quiero que se ejecute como un demonio del sistema. He conseguido que funcione con comandos tipo ./demonio start, ./demonio stop .... y todo bien. En un punto del programa hago un fork(), el padre termina y el hijo queda chequeando cosas... hasta que cierro la ventana del terminal!! Y eso no es lo que quiero.

EDITO:
Lo que hace el programa es gestionar ciertos servicios del sistema, por ejemplo: arrancar el servidor SSH, después de cierto evento, para lo cual llama al sistema con la órden [execl("/etc/init.d/ssh","ssh", "start", NULL);] Pues bien, me he dado cuenta que el demonio se cierra únicamente cuando tiene que sacar algo por pantalla (y no está la consola). Si la ejecución de la orden que sea devuelve algo tipo "cout" y la consola fué cerrada, entonces la aplicación termina abruptamente.

¿Cómo podría solucionar esto?

Muchas gracias por vuestras respuestas.

EDITO [SOLUCIONADO]:

El problema era que la salida estándar no está disponible al cerrar la consola, y cuando el proceso intenta hacer una salida, se cierra.

Justo antes de la instrucción execl() he cerrado STDOUT_FILENO y STDERR_FILENO con close() y los he redirigido a /dev/null con creat() haciendo que el proceso que ejecuta el comando dirija su salida hacia "nada".

Última edición por javih82; 30/04/2010 a las 09:02 Razón: SOLUCIONADO

Etiquetas: cerrar, consola, demonio, solucionado
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:29.