defunc 에 대해서..

shean0의 이미지

갑자기 서버에 접속이 되지 않는 현상이 일어났습니다.
쉘에서 자원이 없다고 telnet접속이 되지 않아서... 결국 콘솔로 접속하여..
ps -ef 보니
defunc가 15585 정도 까지채워서 있더군요.
다행이도 제일 부모프로세스(서비스프로세스)를 죽이니 없어지던군요.
재부팅해야하는지..걱정했는데.. 다행이었습니다.

문제가 여기 있는지.. 아니면 다른곳인지.. 구별이 안되어 문의드립니다.

코드 2개가 있는데요.. 현재는 위의코드로 돌아갑니다.
문제가 있는지요..문제가 있다면 그냥 간단하게 아래처럼 바꾸려구 합니다.
조언을 부탁드립니다.
1

main()
{
  signal(SIGCHLD, sigchldCatcher); //settingsignal() 호출:아래참조
  ret=fork(); 
  if(ret) ...
  else   ...
}
/*****************************************
 Name : sigchldCatcher()
Description : Child 프로세스에 이상이 있을 경우
********************************************/
void sigchldCatcher(int sig)
{
    while (waitpid(-1, NULL, WNOHANG) > 0)
            signal(SIGCHLD, sigchldCatcher);
}

이것과..

2.

main()
{
  signal(SIGCHLD,SIG_IGN);
  ret=fork(); 
  if(ret) ...
  else   ...
}

실제는 참조..

void settingsignal(void)
{
        /* 시그널이 초*/
        signal(SIGHUP, SIG_IGN);
        signal(SIGQUIT, SIG_IGN);

        signal(SIGILL,  ignoreThisSignal);      /* 잘못된 명령어*/
        signal(SIGABRT, ignoreThisSignal);      /* 중단 시그널*/
        signal(SIGSEGV, ignoreThisSignal);      /* 잘못된 메모리 참조*/
        signal(SIGTERM, ignoreThisSignal);      /* 종료시그널*/
        signal(SIGCONT, ignoreThisSignal);      /* 중단시 재개*/
        signal(SIGURG,  ignoreThisSignal);  /* 소켓에 긴급상황 발생*/
        signal(SIGPOLL, ignoreThisSignal);      /* 폴링 시그널*/
        signal(SIGXCPU, ignoreThisSignal);      /* CPU 제한 초과*/
        signal(SIGXFSZ, ignoreThisSignal);      /* 파일 제한 초과*/

        signal(SIGPIPE, sigpipeCatcher);        /* 파이프 시그널*/
        signal(SIGCHLD, sigchldCatcher);
        signal(SIGCHLD, sigchldCatcher);
}

위의 1,2 코드에 문제가 없다면.. 다른 원인으로는 무엇을 확인해 보아야 할가요??
sunyzero의 이미지

signal() 과 sigaction()의 차이를 알아보시기 바랍니다.

signal()을 쓰는 것은 좋지 않은 프로그래밍 습관입니다.

========================================
* The truth will set you free.

댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 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>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 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>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 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>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.