signal handling관련한 문제인데요.

uamyd5279의 이미지

별 다른 건 없고. 이해가 되질 않아서 여기에 올립니다.

void ExitProc( int signo )
{
 printf("Exit:%d\n",signo);
 exit(1);
}

void AlarmSignal( int sig )
{
 signal( sig, AlarmSignal );
 return;
}

int main()
{
 signal( SIGINT,ExitProc );
 signal( SIGTERM,ExitProc );
 signal( SIGIALRM, AlarmSignal );

 while( 1 ){
  puts("hello, pc");
 }
}

위와 같은 형식입니다.
인터럽트 cntl+c를 누르면 printf("exit..") 수행하고 죽어야 하는게 정상 아닙니까?
같은 형식인데도, 어떤 프로세스는 제대로 찍고 죽고, 어떤 프로세스는 절대(?) 죽지 않더군요.

차이점을 생각하면, 죽는 프로세스는 별다른 화일관리가 없고 메모리상에서만 작동을 하고( 물론 가끔 화일관리도 합니다만, )
죽지 않는 프로세스는 화일관리 때문에 매우 느립니다.
어떻게 수행속도는 설명을 못드리겠는데요, 하여간에 그렇습니다.

왜 어떤건 인터럽트가 걸리고, 어떤건 안걸리는 건지...너무 궁금합니다. 참고로 죽지 않는게 좋긴 하지만,....디버깅하려면..쿨럭..
고수님들의 조언 부탁 드립니다.

cpulpul의 이미지

 signal( SIGINT,ExitProc );
 signal( SIGTERM,ExitProc );
 signal( SIGIALRM, AlarmSignal );

signal() 함수는 대기열이 없으므로 여러개 signal 이 발생하였을 경우
처음 발생한 signal만 처리하므로 이러한 현상이 발생된것 같습니다.

Quote:
sigaction()

이걸로 바꿔서 테스트 해보세요..

익명 사용자의 이미지

signal() 함수는 대기열이 없으므로 여러개 signal 이 발생하였을 경우
처음 발생한 signal만 처리하므로 이러한 현상이 발생된것 같습니다. 

그렇다면 제대로 수행되는 것들은 왜 되는거죠?
그리고..제가 동시에는 수행을 못한다고 생각하는데...

화일을 쓰고 읽는 부분에서 지연시간(?)이 생기고 그 사이에
두 가지 이상을 사용해서 인가?.....

알 수가 없네요.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.