The UNIX and Linux Forums  
Здравствуйте и добро от Соединенных Штатов UNIX и Linux Форумы! Благодарим Вас за посещение и вступления нашей мирового сообщества.

Go Back   В UNIX и Linux Форумы > Топ форумы > Программирования высокого уровня
.
Google unix.com



Программирования высокого уровня Почтовые вопросы о C, C + +, Java, SQL и других языках программирования здесь.

Подробнее UNIX и Linux Темы форума можно найти полезные
Нить Резьба для начинающих Форум Ответы Последнее сообщение
Проблемы с logadm / системных журналов в Соль 9 / 10 avronius SUN Solaris 10 11-04-2008 02:24 PM
[Linux] Как до Segfault aslambilal UNIX для чайников Вопросы И Ответы 1 10-17-2008 09:01 PM
Catching Ctrl-C или Ctrl-D sendhilmani123 Shell программирование и сценарии 2 05-02-2006 06:02 PM
Отключить Ctrl-C, Ctrl-D, Ctrl-D в KSH сценарий wtofu AIX 6 06-29-2005 05:41 PM
проблемы с Ctrl-Z, для переключения переднего плана, фона yls177 UNIX для чайников Вопросы И Ответы 9 04-15-2003 01:09 PM

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered By Powered by Google
 
LinkBack Резьба Инструменты Искать в этом Thread Оценить Thread Режимы дисплея
Old 06-12-2009
james2432 james2432 is offline
Зарегистрированный пользователь
  
 

Регистрация: Апрель 2009
Сообщений: 15
2 проблемы: Segfault по Ctrl + C и системного журнала () проблем

1. Даже если у меня есть ручки для Ctrl + C дает начало segfault
2. журнале не LOG_ERR журнал регистрации событий в масках, не указан или указан, то будет зарегистрировано LOG_WARNING однако ...

Код:
#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;
}
Old 06-16-2009
lagigliaivan lagigliaivan is offline
Зарегистрированный пользователь
  
 

Регистрация: Май 2008
Сообщений: 45
Привет

Что OS / архитектура вы используете? Я пробовал использовать Linux, и, хотя код не компилируется на во-первых, она отлично работает, и я не получил sigsev.

Я помню, когда я был с той же проблемой, но она была в архитектуре отличается от i386.
Old 06-16-2009
james2432 james2432 is offline
Зарегистрированный пользователь
  
 

Регистрация: Апрель 2009
Сообщений: 15
По умолчанию ядро Ubuntu 9.04
I386 Archetechure
Reply

Закладки

Резьба Инструменты Искать в этом Thread
Искать в этом Thread:

Расширенный поиск
Режимы дисплея Оценить эту ветку
Оценить эту ветку:

Отправка Правила
Вы не может Начать новую нитей
Вы не может Почтовые ответы
Вы не может Почтовые вложения
Вы не может Редактировать Ваши сообщения

BB код быть На
Смайлики являемся На
[IMG] код На
HTML-код Вне
Trackbacks являемся На
Pingbacks являемся На
Refbacks являемся На




Часовой пояс GMT -4. Текущее время 01:08 AM.


Powered By: Справка, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Язык Переводы на питание от .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
В UNIX и Linux форумы Содержание Copyright © 1993-2009. Все права Reserved.Ad управления по RedTyger

Содержание соответствующие URL-адреса в vBSEO 3.2.0