Ctrl+c 눌렀을때 자식 프로세스 종료하려면 어떻게 해야하죠?

geneven의 이미지

쉘을 한번 만들어보려고 하는데 자식 프로세스 수행하는 동안 부모 프로세스는
wait하고 있거든요? 이때 ctrl+c를 이용해 자식 프로세스만 죽이고 부모한테는
동작 안하게 하려고 하는데 음.. 어떻게 해야할지 감이 안오네요..

sigaction이라는 함수를 쓰면 된다는데 프로그래밍 초보라 무슨 말인지 전혀
모르겠어요.

geneven의 이미지

signal함수 써서 하는건 알겠거든요??

근데 제가 여기 게시판에서 본 글에 따르면 signal함수는 한번 수행되면
다시 원래되로 상태를 되돌려 놓는다고 했는데 실제로 해보니까 여러번
CTRL+C키를 눌러도 제가 정의한 기능대로 동작하는데 원래 이게 맞는건가요?

아 그리고 sigaction은 이상하게도 자꾸 ctrl+C키를 누르면 mode:0이란메세지가 뜨면서 기능이 동작하는데 왜 이런거죠?

anfl의 이미지

리눅스에서는 signal 핸들링을 해놓으면 한번만 실행되고 default 상태로 돌아가는것이 아니라 계속해서 수행됩니다.
sun solaris같은 unix들은 한번만 수행되고 default 상태로 돌아 갑니다.


isinji의 이미지

signal() 은 원래 System V 쪽에서 만들어졌습니다. 이넘은 코딩하기는 편하지만 한번 handler에서 처리가 끝나고 나면 다시 kernel의 시그널 셋이 off 된다는 단점이 있었습니다.

예전의 AP 개발자들은 이 문제를 해결하기 위해 handler에 진입하면 다시 signal()을 등록하여 문제를 해결하기도 했다고 합니다.

나중에 BSD계열에서 새로 구현된 signal()은 이러한 문제가 없습니다. 또 System V 계열의 유닉스 중 일부도 실제 구현에서는 이 문제를 해결하기도 하였고, HP-UX와 같은 일부 UNIX에서는 구 버전의 signal()을 그냥 두고 새로이 BSD signal과 동일한 기능을 하는 sigset()이라는 call을 만들기도 했다는 군요...

많이 사용되기는 하지만 signal()은 업계표준은 아닙니다. 기왕이면 POSIX 표준인 sigaction을 사용하심이...

댓글 달기

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