{"id":3784,"date":"2020-07-09T00:02:47","date_gmt":"2020-07-08T15:02:47","guid":{"rendered":"https:\/\/now0930.pe.kr\/wordpress\/?p=3784"},"modified":"2020-07-09T00:03:45","modified_gmt":"2020-07-08T15:03:45","slug":"signal-page-342","status":"publish","type":"post","link":"https:\/\/now0930.pe.kr\/wordpress\/signal-page-342\/","title":{"rendered":"signal, page 342"},"content":{"rendered":"\n<p>signal \uc608\uc81c. shell\uc5d0\uc11c kill -l\ub85c \ud574\ub2f9 PID\uc5d0 \uc2dc\uadf8\ub110\uc744 \ubcf4\ub0bc \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;stdlib.h>\n#include &lt;stdio.h>\n#include &lt;unistd.h>\n#include &lt;signal.h>\n\/* handler for SIGINT *\/\n\n\nstatic void signal_hanlder (int signo)\n{\n\/*\n* Technically, you shouldn't use printf() in a\n* signal handler, but it isn't the end of the\n* world. I'll discuss why in the section\n* \"Reentrancy.\"\n*\/\n\tif(signo == SIGINT){\n\t\tprintf (\"Caught SIGINT!\\n\");\n\t\texit (EXIT_SUCCESS);\n\t}\n\telse if(signo == SIGCHLD){\n\t\tprintf (\"SIGCHLD occured!\\n\");\n\t\t\/\/exit (EXIT_SUCCESS);\n\n\t}\n}\n\nstatic void sigchld_handler (int signo)\n{\n\/*\n* Technically, you shouldn't use printf() in a\n* signal handler, but it isn't the end of the\n* world. I'll discuss why in the section\n* \"Reentrancy.\"\n*\/\n\tprintf (\"SIGCHLD occured!\\n\");\n\t\/\/exit (EXIT_SUCCESS);\n}\n\nstatic void sighup_handler (int signo)\n{\n\/*\n* Technically, you shouldn't use printf() in a\n* signal handler, but it isn't the end of the\n* world. I'll discuss why in the section\n* \"Reentrancy.\"\n*\/\n\tprintf (\"SIGHUP occured!\\n\");\n\tprintf (\"ignoring SIGHUP\\n\");\n\tif (signal(SIGHUP, SIG_IGN) == SIG_ERR){\n\t\tfprintf (stderr, \"Cannot ignore SIGHUP!\\n\");\n\t\texit (EXIT_FAILURE);\n\t}\n\n}\n\n\nint main (void)\n\t{\n\t\/*\n\t* Register signal_hanlder as our signal handler\n\t* for SIGINT.\n\t*\/\n\tint pid;\n\n\tif (signal (SIGINT, signal_hanlder) == SIG_ERR) {\n\t\tfprintf (stderr, \"Cannot handle SIGINT!\\n\");\n\t\texit (EXIT_FAILURE);\n\t}\n\tif (signal(SIGCHLD, signal_hanlder) == SIG_ERR){\n\t\tfprintf (stderr, \"Cannot handle SIGCHLD!\\n\");\n\t\texit (EXIT_FAILURE);\n\n\t}\n\n\t\/\/signal hangup \ub4f1\ub85d\n\t\/\/\uc8fc\uc11d \ucc98\ub9ac \ud6c4 run.. shell\ub85c signal \uc804\uc1a1.\n\t\/\/pi@raspberrypi:~ $ kill -1 pid\n\t\/\/\ud558\uba74 \n\t\/\/pi@raspberrypi:~\/Project\/cCode\/systemProgram $ rm .\/a.out ;gcc signal.c ;.\/a.out\n\t\/\/I'm child, died\n\t\/\/SIGCHLD occured!\n\t\/\/\ub04a\uc5b4\uc9d0\n\t\/\/\uc8fc\uc11d \ucc98\ub9ac\ud558\uba74\n\t\/\/pi@raspberrypi:~ $ kill -1 pid\n\t\/\/\ud558\uba74 \ubb34\uc2dc\ud568.\n\n\tif (signal(SIGHUP, SIG_IGN) == SIG_ERR){\n\t\tfprintf (stderr, \"Cannot ignore SIGHUP!\\n\");\n\t\texit (EXIT_FAILURE);\n\t}\n\n\n\t\/\/\ub354 \uc774\uc5b4\uc11c..\n\t\/\/\ud55c\ubc88 sighup\uc744 \uc8fc\uba74 \uba54\uc138\uc9c0\ub97c \uc8fc\uace0,\n\t\/\/\ub450\ubc88\uc9f8 \ubc1b\uc73c\uba74 \ubb34\uc2dc\ub418\ub3c4\ub85d \uc791\uc131.\n\tif (signal(SIGHUP, sighup_handler) == SIG_ERR){\n\t\tfprintf (stderr, \"Cannot redefine SIGHUP!\\n\");\n\t\texit (EXIT_FAILURE);\n\t}\n\n\tpid=fork();\n\n\tif(pid == 0){\n\t\t\/\/child process\n\t\tprintf(\"I'm child, died\\n\");\n\t\tsleep(1);\n\t\t_exit(EXIT_SUCCESS);\n\t}\n\n\tfor (;;)\n\t\tpause ();\n\n\treturn 0;\n}\n<\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>signal \uc608\uc81c. shell\uc5d0\uc11c kill -l\ub85c \ud574\ub2f9 PID\uc5d0 \uc2dc\uadf8\ub110\uc744 \ubcf4\ub0bc \uc218 \uc788\ub2e4.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[12],"tags":[775,53,776],"class_list":["post-3784","post","type-post","status-publish","format-standard","hentry","category-12","tag-c","tag-linux","tag-system-program"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/3784","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/comments?post=3784"}],"version-history":[{"count":1,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/3784\/revisions"}],"predecessor-version":[{"id":3785,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/3784\/revisions\/3785"}],"wp:attachment":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/media?parent=3784"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/categories?post=3784"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/tags?post=3784"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}