시그널 문제..

irum66의 이미지

리눅스에서 프로그램 코딩하다고 궁금한 점 있어서 몇자 적어 봅니다.

이상하게.. 컴파일은 되는데.. 쓰레드 부분이 다 죽어 버리는 것 같습니다..

시그널 문제인것 같은데.. 시그널 이 발생해도 무시하는 방법은 없는지요..

moonzoo의 이미지

가장 간단한 방법으로는

signal 함수를 이용하는 것입니다.

예를 들어 signal(SIGINT,SIG_IGN);
하시면 SIGINT 신호가 무시되고요..

시그날을 핸들링 하고 싶다면..

예제

..
signal(SIGINT, sighandler);
signal(SIGTERM, sighandler);
..

void sighandler(int sig)
{
   printf("\n%d signal 발생",sig);
   ...
   분기 처리 루틴(switch등등)...
}

간단하게는 위에 처럼 확인 후 처리하셔도 됩니다.

irum66의 이미지

        struct ip_comm a2;
        int k,i,j;
     

     /*(void) signal(SIGCHLD,SIG_IGN);
        (void) signal(SIGCONT,SIG_IGN);
        (void) signal(SIGSTOP,SIG_IGN);
        (void) signal(SIGTSTP,SIG_IGN);
        (void) signal(SIGTTIN,SIG_IGN);
        (void) signal(SIGTTOU,SIG_IGN);
        (void) signal(SIGALRM,SIG_IGN);
        (void) signal(SIGFPE,SIG_IGN);
        (void) signal(SIGHUP,SIG_IGN);
        (void) signal(SIGILL,SIG_IGN);
        (void) signal(SIGINT,SIG_IGN);
        (void) signal(SIGKILL,SIG_IGN);
        (void) signal(SIGPIPE,SIG_IGN);
        (void) signal(SIGQUIT,SIG_IGN);
        (void) signal(SIGSEGV,SIG_IGN);
        (void) signal(SIGTERM,SIG_IGN);*/


        for(j=0;j<10;j++)
        {
                sleep(3);
                a2= get_ip_comm(&k);

                printf("%d",k);
                for(i=0;i<k;i++)
                {
                        printf("%s   %s\n",a2.ip[i],a2.comm[i]);
                }
        }

여기 서 get_ip_comm함수는 pro*C로써 데이터 베이스에서 값을 구조체로 가지고 오고 있습니다.. 컴파일 하면 아무런 문제가 없습니다.. 근데 sleep() 함수가 1번만 실행되고 죽어버리는 군요.. 시그널 문제가 해서 모든 시그널을 다 블럭 시켜 봤는데. 안되는 군요...이문제를 어떻게 해결해야 할쥐..고수분들의 많은 답변 기둘리겠습니다...

liongo의 이미지

제가 보기에는 다른 이유도 한번 생각해보시는게 좋을것같군요

아무 이유없이 죽는다라. 정상종료 일경우 그럴경우가 있구요.

시그널도 의심될 요지가 있을수 있는건 사실입니다. 하지만

님의 코드와 정황으로만으로 명확하기 짚기 힘든것 또한 사실입니다.

제가보기엔 제일 간단한방법은 GDB 로 확인하는 방법입니다..

별로 답변이라고 하긴 그렇습니다.~

' 형식이 내용을 규정한다. '

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.