The UNIX and Linux Forums  


Go Back   El UNIX y Linux Foros > Arriba Foros > Programación de Alto Nivel
.
google unix.com



Programación de Alto Nivel Plantear preguntas acerca de C, C + +, Java, SQL, y otros lenguajes de programación aquí.

Más UNIX y Linux Foro Temas usted puede encontrar útiles
Hilo Hilo para principiantes Foro Respuestas Último mensaje
Problemas con el logadm / syslog en Sol 9 / 10 avronius Sun Solaris 10 11-04-2008 02:24 PM
[Linux] ¿Cómo Ejecutar Hasta segfault aslambilal UNIX for Dummies Preguntas y Respuestas 1 10-17-2008 09:01 PM
Captura ctrl-C o Ctrl-D sendhilmani123 Programación de scripts de shell y 2 05-02-2006 06:02 PM
Deshabilitar Ctrl + C, Ctrl-D, Ctrl-D en la secuencia de comandos de ksh wtofu AIX 6 06-29-2005 05:41 PM
problemas con Ctrl-Z, para cambiar de frente, fondo yls177 UNIX for Dummies Preguntas y Respuestas 9 04-15-2003 01:09 PM

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback vínculo Herramientas de hilo Buscar en este Hilo Tasa de Hilo Modos de visualización
  #1 (Enlace permanente)  
Old 06-12-2009
james2432 james2432 is offline
Usuario Registrado
  
 

Fecha: abril 2009
Puestos: 15
2 Problemas: segfault en Ctrl + C y syslog () problemas

1. Incluso si tengo los medios para ctrl + c emite un segfault
2. syslog no registro LOG_ERR evento con registro enmascarados o no especificados especificado, sin embargo los registros LOG_WARNING ...


Código:
#include <sys/types.h>  /* include this before any other sys headers */
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <assert.h>
#include <syslog.h>
#include <errno.h>
#include <sys/wait.h>   /* header for waitpid() and various macros */
#include <signal.h>     /* header for signal functions */
#include <stdio.h>      /* header for fprintf() */
#include <unistd.h>     /* header for fork() */
#include <stdlib.h>   
void  ChildProcess(void);                /* child process prototype  */
void  ParentProcess(void);               /* parent process prototype */
#define DAEMON_NAME "mplayerdaemon"
#define PID_FILE "/var/run/mplayerdaemon.pid"

/***********************************************************
  Function: signal_handler
  Description: Handles signals the daemon might receive. 
               Gives the daemon enough time to properly shutdown

  Params: sig : The signal(int) received
 *********************************************************************/
void signal_handler(int sig) {
 
    switch(sig) {
        case SIGHUP:
            syslog(LOG_WARNING, "Received SIGHUP signal.");
            break;
        case SIGTERM:
            syslog(LOG_WARNING, "Received SIGTERM signal.");
            break;
        default:
            syslog(LOG_WARNING, "Unhandled signal (%d) %s", strsignal(sig));
            break;
    }
}

int  main(int argc, char *argv[])
{
#if defined(DEBUG)
    int daemonize=0;
#else
    int daemonize=1;
#endif
    
    // Setup signal handling before we start
    signal(SIGABRT, signal_handler);
    signal(SIGHUP, signal_handler);
    signal(SIGTERM, signal_handler);
    signal(SIGINT, signal_handler);
    signal(SIGQUIT, signal_handler);

    syslog(LOG_INFO, "[INFO] %s daemon starting up",DAEMON_NAME);

#if defined(DEBUG)
        setlogmask(LOG_UPTO(LOG_DEBUG));
        openlog(DAEMON_NAME,LOG_CONS | LOG_NDELAY | LOG_PERROR | LOG_PID, LOG_USER);
#else
        setlogmask(LOG_UPTO(LOG_INFO));
        openlog(DAEMON_NAME, LOG_CONS, LOG_USER);
#endif

    /* Our process ID and Session ID */
    pid_t pid, sid;

    syslog(LOG_WARNING,"[ERROR] testing error");
    daemonize=0; //for debug purposes only
    if (daemonize) {
        syslog(LOG_INFO, "[INFO] starting the daemon process");


        /* Fork off the parent */
        pid = fork();
        if (pid<0) {
            exit(EXIT_FAILURE);
        }
        /* If we got a good PID, then 
          we can tell the parent to exit*/
        if (pid>0){
            exit(EXIT_SUCCESS);
        }
        /* Child will always have a 0 if successfully created*/

        /* Change umask so that the program will have access to all child files */
        umask(0);

        /* Create a new SID for the child process */
        sid = setsid();
        if (sid<0){
            syslog(LOG_WARNING,"[ERROR] Error while getting new session id, error code : -1");
            exit(EXIT_FAILURE);
        }

        /* Change the current working directory */
        /*
         if ((chdir("/")) < 0){
            syslog(LOG_ERR,"Error while changing directory error code : -1");
             exit(EXIT_FAILURE);
         }

         */

        /* Close out the standard file descriptors 
           Because daemon won't be accepting input from console */
        close(STDIN_FILENO);
        close(STDOUT_FILENO);
        close(STDERR_FILENO);
        
    }

    while(1){
          int rc=system("ps -C mplayer -opid=");
                        
          rc = WEXITSTATUS(rc); /* Check if mplayer is running */
          printf("I was here pid: %d\n",rc);

        /*if mplayer quits unexpectedly */
        if(rc > 0 ){
           
                 launchmplayer();
                 sleep(2);
              }

     }

    /* if loop breaks daemon exits*/
    syslog(LOG_INFO, "%s daemon exiting",DAEMON_NAME);

    exit(0);
}

void launchmplayer(void)
{
     system("mplayer ~/test.avi");
     return;
}

 

Marcadores

Herramientas de hilo Buscar en este Hilo
Buscar en este Hilo:

Búsqueda avanzada
Modos de visualización Vota a este hilo
Vota a este hilo:

Normas de envío
puede que no nuevo puesto de hilos
puede que no enviar respuestas
puede que no enviar archivos adjuntos
puede que no editar sus puestos

Código BB es Encendido
Emoticones son Encendido
[IMG] código Encendido
Código HTML es Apagado
Trackbacks son Encendido
Pingbacks son Encendido
Refbacks son Encendido




Todas las horas son GMT -4. La hora es 12:13 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traducciones de idiomas Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Estudios
El UNIX y Linux Foros Contenido Copyright © 1993-2009. Todos los derechos Reserved.Ad Gestión por RedTyger

Las direcciones URL de contenido vBSEO 3.2.0