[질문] Signal Handle(sigaction)의 Signal 처리 범위...??

splendor의 이미지

Signal Handling에 관련해서 문의드립니다.
이부분에 대해서는 왕초보인지라...ㅡㅡ;;

sigaction(....) 이렇게 처리하는 부분들이 전체 시스템내에 여러군데에 있으면 어떻게 처리가 되는지요?

예를 들어서
시스템 전체에는 A 모듈, B 모듈, C 모듈이 있는데.....
각 모듈은 별도의 process들로 동시에 돌고있고, process내에서 pthread들을 여러개 생성하기도 합니다.

가령 C모듈 코드 안에 sigaction을 정의했다면 그것은 C모듈 실행시 발생한 Signal에 대해서 처리하는 것인지요?
아니면 다른 A모듈, B 모듈들에서 발생한 Signal도 C모듈의 sigaction에서 잡힐 수가 있는 것인지요?

sigaction을 통해서 Signal Handler를 설정한 경우 Signal을 잡는 범위가 어디까지 인지 궁금합니다.

가령 어떤 Process가 있고, 거기서 SignalHandler를 달면 그 Process에서 생성한 모든 pthread들의 signal에 대해서 잡는다던지...

제가 Signal Handling쪽은 왕초보라 개념이 좀 없습니다. ㅡㅡ;;
고수들의 한수 가르침 부탁드립니다.

superkkt의 이미지

프로세스는 자신한테 오는 시그널만 잡습니다. 자식프로세스가 죽었을때 받는 SIGCHLD나 끊어진 소켓에 데이터를 쓸때 발생하는 SIGPIPE 등과 같이 시스템이 해당 프로세스에게 시그널을 보내거나, 프로세스 A가 서로간의 동기화 등을 위해 프로세스 B에게 시그널을 보내거나 또는 유저가 특정 동작을 지시하기위해 프로세스에게 SIGHUP 신호를 보내는것과 같이 프로세스는 자신에게 오는 시그널만 잡아서 처리를 합니다. A 프로세스가 B 프로세스에게 가는 시그널을 잡아서 처리할수는 없습니다.

그리고 프로세스에서 생성되는 쓰레드는 해당 프로세스의 시그널 설정을 상속받는것으로 알고 있습니다. 단, 여기서 주의할점이 쓰레드는 프로세스와는 달리 하나의 프로세스에서 생성된 다수의 쓰레드는 해당 프로세스에게 전송된 시그널을 모두 받습니다. 그래서 멀티쓰레드 프로그램에서 서로간의 동기화를 위해 유닉스 시그널을 사용하는것은 적절하지 못하다고 들었습니다.

쓰레드 책을 본지 오래되서 기억이 가물가물합니다. 혹시 틀린점이 있으면 다른 고수분들이 지적해 주실겁니다. ^^

======================
BLOG : http://superkkt.com

======================
BLOG : http://superkkt.com

익명 사용자의 이미지

한 프로세스에서 생성된 쓰레드가 있고.. 이 프로세스에 signal을 보내면 main thread와 sub thread 어느쪽에서 signal에 반응할지는 시스템 및 OS별로 상이합니다.
즉.
main thread와 sub thread가 둘다 read 대기중일때.. 프로세스 외부에서 signal을 전송(kill)한다면.. 어느 Thread가 ERINTR(signal interrupt)에러를 받고 리턴할까요?
답은 제목과 같습니다.

댓글 달기

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