리눅스에서 프로그램 코딩하다고 궁금한 점 있어서 몇자 적어 봅니다.
이상하게.. 컴파일은 되는데.. 쓰레드 부분이 다 죽어 버리는 것 같습니다..
시그널 문제인것 같은데.. 시그널 이 발생해도 무시하는 방법은 없는지요..
가장 간단한 방법으로는
signal 함수를 이용하는 것입니다.
예를 들어 signal(SIGINT,SIG_IGN); 하시면 SIGINT 신호가 무시되고요..
시그날을 핸들링 하고 싶다면..
예제
.. signal(SIGINT, sighandler); signal(SIGTERM, sighandler); .. void sighandler(int sig) { printf("\n%d signal 발생",sig); ... 분기 처리 루틴(switch등등)... }
간단하게는 위에 처럼 확인 후 처리하셔도 됩니다.
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번만 실행되고 죽어버리는 군요.. 시그널 문제가 해서 모든 시그널을 다 블럭 시켜 봤는데. 안되는 군요...이문제를 어떻게 해결해야 할쥐..고수분들의 많은 답변 기둘리겠습니다...
제가 보기에는 다른 이유도 한번 생각해보시는게 좋을것같군요
아무 이유없이 죽는다라. 정상종료 일경우 그럴경우가 있구요.
시그널도 의심될 요지가 있을수 있는건 사실입니다. 하지만
님의 코드와 정황으로만으로 명확하기 짚기 힘든것 또한 사실입니다.
제가보기엔 제일 간단한방법은 GDB 로 확인하는 방법입니다..
별로 답변이라고 하긴 그렇습니다.~
' 형식이 내용을 규정한다. '
텍스트 포맷에 대한 자세한 정보
<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]
signal 함수..
가장 간단한 방법으로는
signal 함수를 이용하는 것입니다.
예를 들어 signal(SIGINT,SIG_IGN);
하시면 SIGINT 신호가 무시되고요..
시그날을 핸들링 하고 싶다면..
예제
간단하게는 위에 처럼 확인 후 처리하셔도 됩니다.
sleep함수 죽는 문제..
여기 서 get_ip_comm함수는 pro*C로써 데이터 베이스에서 값을 구조체로 가지고 오고 있습니다.. 컴파일 하면 아무런 문제가 없습니다.. 근데 sleep() 함수가 1번만 실행되고 죽어버리는 군요.. 시그널 문제가 해서 모든 시그널을 다 블럭 시켜 봤는데. 안되는 군요...이문제를 어떻게 해결해야 할쥐..고수분들의 많은 답변 기둘리겠습니다...
제가 보기에는 다른 이유도 한번 생각해보시는게 좋을것같군요아무 이
제가 보기에는 다른 이유도 한번 생각해보시는게 좋을것같군요
아무 이유없이 죽는다라. 정상종료 일경우 그럴경우가 있구요.
시그널도 의심될 요지가 있을수 있는건 사실입니다. 하지만
님의 코드와 정황으로만으로 명확하기 짚기 힘든것 또한 사실입니다.
제가보기엔 제일 간단한방법은 GDB 로 확인하는 방법입니다..
별로 답변이라고 하긴 그렇습니다.~
' 형식이 내용을 규정한다. '
댓글 달기