{"id":23438,"date":"2022-11-26T01:23:10","date_gmt":"2022-11-25T19:53:10","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/"},"modified":"2022-11-26T01:23:10","modified_gmt":"2022-11-25T19:53:10","slug":"solved-running-3-child-processes","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/","title":{"rendered":"[Solved] Running 3 child processes"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-30156799\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"30156799\" data-parentid=\"30154922\" data-score=\"0\" data-position-on-page=\"2\" data-highest-scored=\"0\" data-question-has-accepted-highest-score=\"0\" itemprop=\"suggestedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>Here&#8217;s a better instrumented version of your code; it includes the PID in the output, and the outputs are one line each.<\/p>\n<pre><code>#include &lt;iostream&gt;\n#include &lt;cstdlib&gt;\n#include &lt;sys\/wait.h&gt;\n#include &lt;unistd.h&gt;\n\nusing namespace std;\n\nint main()\n{\n    int ch1 = fork();\n    int ch2 = fork();\n    int ch3 = fork();\n\n    if (ch1 == 0) \/\/ child1\n    {\n        cout &lt;&lt; (int)getpid() &lt;&lt; \": This is child 1 - Finished\\n\";\n        exit(0);\n    }\n    else if (ch2 == 0)\n    {\n        waitpid(ch1, 0, 0);\n        cout &lt;&lt; (int)getpid() &lt;&lt; \": This is child 2 - Finished\\n\";\n        exit(0);\n    }\n    else if (ch3 == 0)\n    {\n        waitpid(ch2, 0, 0);\n        cout &lt;&lt; (int)getpid() &lt;&lt; \": This is child 3 - Finished!\\n\";\n        exit(0);\n    }\n    else\n    {\n        waitpid(ch3, 0, 0);\n        cout &lt;&lt; (int)getpid() &lt;&lt; \": This is parent - waited for all children to finish!\\n\";\n        exit(0);\n    }\n    return 0;\n}\n<\/code><\/pre>\n<p>Sample output:<\/p>\n<pre><code>$ .\/3kids\n40287: This is child 3 - Finished!\n40285: This is child 1 - Finished\n40286: This is child 2 - Finished\n40290: This is child 1 - Finished\n40289: This is child 2 - Finished\n40288: This is child 1 - Finished\n40284: This is parent - waited for all children to finish!\n40291: This is child 1 - Finished\n$\n<\/code><\/pre>\n<p>As you can see, there is one process that considers itself to be child 3, two processes that consider themselves to be child 2, and four processes that consider themselves to be child 1 and one that considers itself to be the parent.  This is consistent with the unconstrained forking which creates 8 processes.<\/p>\n<p>To have 3 children only, and to wait for each in turn, you need code more like:<\/p>\n<pre><code>#include &lt;iostream&gt;\n#include &lt;cstdlib&gt;\n#include &lt;sys\/wait.h&gt;\n#include &lt;unistd.h&gt;\n\nusing namespace std;\n\nvoid child(int n)\n{\n    flush(cout);        \/\/ No pending output\n    int pid = fork();\n    if (pid &lt; 0)\n        cerr &lt;&lt; (int)getpid() &lt;&lt; \": failed to fork\\n\";\n    else if (pid == 0)\n    {\n        cout &lt;&lt; (int)getpid() &lt;&lt; \": This is child \" &lt;&lt; n &lt;&lt; \" - Finished\\n\";\n        exit(0);\n    }\n    else\n    {\n        int corpse;\n        int status;\n        while ((corpse = wait(&amp;status)) != -1)\n            cout &lt;&lt; (int)getpid() &lt;&lt; \": PID \" &lt;&lt; corpse &lt;&lt; \" exited with status \"\n                 &lt;&lt; status &lt;&lt; \"\\n\";\n    }\n}\n\nint main()\n{\n    child(1);\n    child(2);\n    child(3);\n    cout &lt;&lt; (int)getpid() &lt;&lt; \": This is parent - waited for all children to finish!\\n\";\n    return 0;\n}\n<\/code><\/pre>\n<p>Sample output:<\/p>\n<pre><code>$ .\/3kids\n40336: This is child 1 - Finished\n40335: PID 40336 exited with status 0\n40337: This is child 2 - Finished\n40335: PID 40337 exited with status 0\n40338: This is child 3 - Finished\n40335: PID 40338 exited with status 0\n40335: This is parent - waited for all children to finish!\n$\n<\/code><\/pre>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">3<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Running 3 child processes <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Here&#8217;s a better instrumented version of your code; it includes the PID in the output, and the outputs are one line each. #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;sys\/wait.h&gt; #include &lt;unistd.h&gt; using namespace std; int main() { int ch1 = fork(); int ch2 = fork(); int ch3 = fork(); if (ch1 == 0) \/\/ child1 &#8230; <a title=\"[Solved] Running 3 child processes\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/\" aria-label=\"More on [Solved] Running 3 child processes\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[324,424],"class_list":["post-23438","post","type-post","status-publish","format-standard","hentry","category-solved","tag-c","tag-linux"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] Running 3 child processes - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Running 3 child processes - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] Here&#8217;s a better instrumented version of your code; it includes the PID in the output, and the outputs are one line each. #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;sys\/wait.h&gt; #include &lt;unistd.h&gt; using namespace std; int main() { int ch1 = fork(); int ch2 = fork(); int ch3 = fork(); if (ch1 == 0) \/\/ child1 ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-25T19:53:10+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Running 3 child processes\",\"datePublished\":\"2022-11-25T19:53:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/\"},\"wordCount\":103,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"c++\",\"linux\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/\",\"name\":\"[Solved] Running 3 child processes - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-11-25T19:53:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Running 3 child processes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Running 3 child processes - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Running 3 child processes - JassWeb","og_description":"[ad_1] Here&#8217;s a better instrumented version of your code; it includes the PID in the output, and the outputs are one line each. #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;sys\/wait.h&gt; #include &lt;unistd.h&gt; using namespace std; int main() { int ch1 = fork(); int ch2 = fork(); int ch3 = fork(); if (ch1 == 0) \/\/ child1 ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/","og_site_name":"JassWeb","article_published_time":"2022-11-25T19:53:10+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Running 3 child processes","datePublished":"2022-11-25T19:53:10+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/"},"wordCount":103,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++","linux"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/","url":"https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/","name":"[Solved] Running 3 child processes - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-11-25T19:53:10+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-running-3-child-processes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Running 3 child processes"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/23438","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=23438"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/23438\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=23438"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=23438"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=23438"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}