머리가 부셔질거 같습니다.... 답변좀 부탁드립니다 ㅠㅠㅠㅠ

wkdwnsghsms의 이미지

제가 프로세서 에 관해서 지금 프로그램을 만들고 있는데

답답해서 글을 올려 봅니다...

부모 자식 프로세서 두개가 있습니다.

그런데

자식 프로세서에서 종료가 되면

부모 프로세서로 어떠한 값이나 신호가 가서

특정한 함수가 실행 되는 프로그램입니다.

근데 진짜 도저히 모르겠습니다.

공유 메모리(세메포어) 써서 자식 프로세서를 exit 로 종료 하기전에 어떠한 값을 저장해서 부모 프로세서에서 쓸수 있도록 해서 함수를 if 문을 사용해서 실행 하는 방법도 해봤는데.

이건 도저히 비효율적이라 안되고(서버 종료를 할수가 없어서 공유메모리가 계속 남내요...그리고 이건 아무리봐도 아닌거 같아서..)

그나마 시그널이라는 방법이 있는데..

이거는 머... 보면 다

자식 프로세서에서 부모 프로세서로 자식 프로세서가 종료 됬다는 신호는 보내는데

부모프로세서가 그 신호를 어떻게 받는지가 안나와 있습니다..

그 신호만 변수 로 저장해서 사용하면

특정 함수를 사용할수 있다고 생각했는데..

도저히 못찿겠네요...

제발 부탁드립니다 ㅠㅠ

세벌의 이미지

wkdwnsghsms 이건 어떻게 읽나요? 제 머리가 부서질 것 같네요.

http://stackoverflow.com/questions/13351851/killing-a-child-process-from-a-signal-handler 이런 걸 찾으시는 건지?

wkdwnsghsms의 이미지

wait 함수가..

부모 프로세서가 자식 프로세서 종료 될때까지 기다리는 함수인데..

제가 만들려는거는

부모 프로세서는 계속 돌고 있어야 합니다..

기다리면 안됩니다 ㅠㅠ

부모 자식 둘다 실행 도중에

자식이 종료되기 전까지 부모는 while 문을 통해서 계속 반복 실행 되야 합니다.

여기서 자식이 종료 신호를 보내면 부모는 그 신호를 받고 while 문을 빠져 나가야합니다..

MyAbby의 이미지

제 생각엔 그냥 스레드 하나 생성하고

메인이나 생성한 워커 스레드 하나는 자식 wait하고 다른 스레드는 계속 작업하면 되겠는데요.

그리고 while문 조건에다 자식이 죽었는지 살았는지 알리는 flag 하나 달면 되겠구요.

바로 빠져나가야 한다면 그냥 스레드 lock 걸어버리고 프로그램 죽이는 것도 방법이구요. 그렇게 안전하지 않아도 되는 프로그램이라면 말이죠.

jick의 이미지

부모 프로세스가 시작할 때 signal 함수를 불러서 SIGCHLD 핸들러를 등록한 다음, 시그널이 불리면 핸들러에서 (부모 프로세스의) 전역변수에 child_has_exited = true; 뭐 이런 걸 세팅해 주고, 부모 프로세스의 메인 while 루프는 이 변수가 참이 될 때까지 돌고 있으면 되겠네요.

wkdwnsghsms의 이미지

왜 시그널은 다 전역 함수를 쓰는 거임???????

while 문 내에서 종료 하고 위분 말대로 하닌깐 한번 더돌아감..

신호 받자마자 종료 해야하는데

break 걸어서 나가야하는데

한번 더 실행됨..

바로 나가야 하는데

전역함수에 break 를 만들수도 없고 ㅠㅠ

댓글 달기

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