{"id":3724,"date":"2020-06-27T19:02:50","date_gmt":"2020-06-27T10:02:50","guid":{"rendered":"https:\/\/now0930.pe.kr\/wordpress\/?p=3724"},"modified":"2020-06-27T19:02:54","modified_gmt":"2020-06-27T10:02:54","slug":"daemon-%ec%98%88%ec%a0%9c","status":"publish","type":"post","link":"https:\/\/now0930.pe.kr\/wordpress\/daemon-%ec%98%88%ec%a0%9c\/","title":{"rendered":"daemon \uc608\uc81c"},"content":{"rendered":"\n<p>linux system programming, 174p \uc608\uc81c \uc2e4\ud589.<\/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;sys\/types.h>\n#include &lt;sys\/stat.h>\n#include &lt;stdlib.h>\n#include &lt;stdio.h>\n#include &lt;fcntl.h>\n#include &lt;unistd.h>\n#include &lt;linux\/fs.h>\n\nint main (void)\n\n{\n\tpid_t pid, sid;\n\tint i;\n\tint j=0;\n\t\/* create new process *\/\n\tpid = fork ();\n\tprintf(\"Pid is %d \\n\",pid);\n\tif (pid == -1)\n\t\treturn -1;\n\telse if (pid != 0)\n\t\texit (EXIT_SUCCESS);\n\n\n\t\/* create new session *\/\n\tsid =setsid();\n\tif (sid == -1)\n\t\treturn -1;\n\n\tprintf(\"sid is %d \\n\",sid);\n\t\/* set the working directory to the root directory *\/\n\tif (chdir(\"\/\") == -1){\n\t\tprintf(\"check\");\n\t\treturn -1;\n\t}\n\n\t\/* close all open files--NR_OPEN is overkill, but works *\/\n\tprintf(\"FOPEN_MAX is %d\\n\",FOPEN_MAX);\n\tfor (i = 0; i &lt; FOPEN_MAX; i++){\n\t\t\/\/j=close(i);\n\t\tclose(i);\n\t\t\/\/printf(\"%d\\n\", j);\n\t\tprintf(\"%d is closed\\n\", i);\n\t}\n\n\t\/* redirect fd's 0,1,2 to \/dev\/null *\/\n\topen(\"\/dev\/null\", O_RDWR); \/* stdin *\/\n\tdup(0); \/* stdout *\/\n\tdup(0); \/* stderror *\/\n\t\/* do its daemon thing... *\/\n\n\twhile(1){\n\n\t\tsleep(1);\n\t\t\/\/printf(\"this is test\\n\");\n\t}\n\n\treturn 0;\n\n}\n<\/pre>\n\n\n\n<p>54\ubc88 \ud589 printf\uac00 \ub098\uc624\uc9c0 \uc54a\uc74c\uc740 stdout\uc744 \uc8fd\uc5ec\uc11c \uadf8\ub7f0 \ub4ef \ud558\ub2e4.<\/p>\n\n\n\n<p>NR_OPEN\uc744 \ucc3e\uc744 \uc218 \uc5c6\ub294\ub370, \uc61b\ub0a0 \ud504\ub85c\uadf8\ub7a8\uc774\ub77c \ub2e4\ub978 \ubb38\uad6c\ub85c \uc815\uc758\ub41c \ub4ef \ud558\ub2e4. FOPEN_MAX\ub85c \uc77c\ub2e8 \ud588\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">pi@raspberrypi:~\/Project\/cCode\/systemProgram $ gcc daemon.c ;.\/a.out;ps aux | grep pi;\nPid is 1939 \nPid is 0 \nsid is 1939 \nFOPEN_MAX is 16\n0 is closed\nmessage+   346  0.0  0.0   6736  3524 ?        Ss    6\uc6d422   0:04 \/usr\/bin\/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only\navahi      350  0.0  0.0   5896  2960 ?        Ss    6\uc6d422   0:02 avahi-daemon: running [raspberrypi.local]\npi         846  0.0  0.1  14716  7204 ?        Ss    6\uc6d422   0:12 \/lib\/systemd\/systemd --user\npi         849  0.0  0.0  16864  1772 ?        S     6\uc6d422   0:00 (sd-pam)\npi         891  0.0  0.0   7256  3568 tty1     S+    6\uc6d422   0:00 -bash\npi        1939  0.0  0.0   1852    64 ?        Ss   19:01   0:00 .\/a.out\npi        1940  0.0  0.0   8552  2532 pts\/1    R+   19:01   0:00 ps aux\npi        1941  0.0  0.0   6116   496 pts\/1    S+   19:01   0:00 grep --color=auto pi\nroot     28022  0.0  0.1  12236  6304 ?        Ss   17:16   0:00 sshd: pi [priv]\npi       28033  0.0  0.0  12236  3532 ?        S    17:16   0:01 sshd: pi@pts\/0\npi       28036  0.0  0.0   7392  3856 pts\/0    Ss   17:16   0:00 -bash\npi       28244  0.1  0.1  11564  6728 pts\/0    S+   17:19   0:06 vi daemon.c\nroot     28246  0.0  0.1  12236  6252 ?        Ss   17:19   0:00 sshd: pi [priv]\npi       28257  0.0  0.0  12236  3552 ?        S    17:19   0:00 sshd: pi@pts\/1\npi       28260  0.0  0.0   7548  3924 pts\/1    Ss   17:19   0:00 -bash\n<\/pre>\n\n\n\n<p>pid 1939\uac00 ?\ub85c \ub300\ubaac\uc73c\ub85c \ubcc0\uc2e0\ud588\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>linux system programming, 174p \uc608\uc81c \uc2e4\ud589. 54\ubc88 \ud589 printf\uac00 \ub098\uc624\uc9c0 \uc54a\uc74c\uc740 stdout\uc744 \uc8fd\uc5ec\uc11c \uadf8\ub7f0 \ub4ef \ud558\ub2e4. NR_OPEN\uc744 \ucc3e\uc744 \uc218 \uc5c6\ub294\ub370, [&hellip;]<\/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_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[12],"tags":[775,53,776],"class_list":["post-3724","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\/3724","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=3724"}],"version-history":[{"count":6,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/3724\/revisions"}],"predecessor-version":[{"id":3730,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/3724\/revisions\/3730"}],"wp:attachment":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/media?parent=3724"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/categories?post=3724"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/tags?post=3724"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}