프로세스 상성에 관한 질문입니다

cats96의 이미지

A라는 프로세스가 있고
A에서 생성된 B라는 프로세스가있습니다 (B는 fork or thread)
B프로세스 밑에는 여러개의 프로세스가있습니다.

제가 하려는것은 A프로세스는 계속 해서 동작하고 B의 상태를 확인해서
B가 죽은상태면 동작시키는 기능을 구현하려고합니다.

제가 구현한내용은 A에서 B를 생성하고 B프로세스가 끝날때까지 대기합니다
중간에 B프로세스를 죽입니다.(sigint 시그널)

그런데 B만 죽였는데 이상하게 A프로세스까지 죽어버립니다.

예상대로라면 B를 죽이면 A프로세스에서 B상태를 체크한후 B를 실행시켜야하거든요.

프로세스의 상성에 관해서 잘몰라서 조언좀 부탁드릴게요.

김일영의 이미지

B와의 통신(살아있는지 확인하기 위한)이 blocking 방식으로 되어 있는건 아닌지요?

cats96의 이미지

현재 A프로세스에서 B쓰레드를 생성했습니다.
A프로세스가 하는일은 B쓰레드 플래그 체크해서 B쓰레드 생성하는것이고요,
B프로세스 가 종료할때 플래그 초기화 해주고요.

b쓰레드가 종료되어도 제가 보기엔 A프로세스랑 별개인것 같은데 b쓰레드를 죽이면
A프로세스까지 같이 죽어서요.
B쓰레드를 죽일때는 SIGINT 시그널을 보내서 죽였습니다.

mach의 이미지

먼저 프로세스로만 구현한 경우에, B가 사망시 A가 죽는다면, A의 시그널 핸들링이 다소 잘못되어 있지 않나 예측됩니다. 즉, A에서 처리한 모든 시그널핸들링을 먼저 나열해보아야 할 것 입니다. 또한, A와 B사이에 이뤄지는 IPC(프로세스간 통신)을 나열하여 상관관계를 살펴봐야 할것입니다.

A프로세스 내에서 B라는 쓰레드를 생성했다면, 외부에서 B라는 쓰레드에 시그널을 직접 전달할 수 있는 메카니즘은 존재하지 않습니다. A프로세스의 대표자(?)가 시그널을 대표로 받아서, 이를 B쓰레드에게 전달하는 메카니즘등의 형태로 구현되어야 할 것입니다. 또는, 소켓등을 이용해서 종료메시지등을 보내는 것도 좋은 방법이 되겠습니다.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

댓글 달기

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