From 32411bc5353c321caaf7017fe62a6dbe0e3e846b Mon Sep 17 00:00:00 2001 From: Barbara Hunter Date: Wed, 20 Mar 2019 15:18:04 -0400 Subject: [PATCH 1/4] init --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 4b8dba5fa..37e4fa518 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Processes and System Calls +init.... + Now that we've talked a bit about how processes and system calls work at a high level, it's time to apply these concepts by doing some exercises related to process creation and making system calls. We'll be utilizing the `fork()`, `exec()`, `wait()`, and `pipe()` system calls in order to create processes and even have them pass messages to each other. ## Objective From 85326b0f99a321aee0b637e70c53839e7043a0f4 Mon Sep 17 00:00:00 2001 From: Barbara Hunter Date: Wed, 20 Mar 2019 16:22:09 -0400 Subject: [PATCH 2/4] ex1 --- ex1/ex1 | Bin 0 -> 8520 bytes ex1/ex1.c | 22 ++++++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100755 ex1/ex1 diff --git a/ex1/ex1 b/ex1/ex1 new file mode 100755 index 0000000000000000000000000000000000000000..e21eff2b13938e84e33c9fcc604ff4eab85d23c7 GIT binary patch literal 8520 zcmeHNPiS047@zGQ4K+522T7~KG_aCrNKz5eVl*jvb%RBtNl^+q?4P&YM_+cAw{P3z zAOu3eMIxmqJ$mva^dfjH_$T#L&RwM{!Qrn4&t#L6xp zUn6W58at+LzQMzq?=j;M*gCZd}GF+n0eokJ@FMAVc=EI z8HaAZvxe_|vk1gVNpYh=sb=+}S1l>8TCPPny&hj-1CWYqP9g5*&@KAOb!D!Vnwegh zPPAbCqLAWs?W(!1*mFDFN>zQ;SY9mDd{qyF2lB-<+#l>83-h1EO8NPJ;_F9$#y4mP zh?D)}eHZiZ{tiyhzVW&mKN-mnb5acmxWFNxsY=W8;q6bwE>No~KA%TZc z=TOs+xo7(daJ0vc>9u(TwmFof(3d5(-;)l|H>4i7%PhEU&?I_M#+!{`-1iFOrDeYa zOnCx@aeOkQW{zHYY3_@yjnAh)ym9|I*d$5@MI1g973xtgdq2%Q10AW|5zK9cJp5fI zh2y@6!Zyy~;PpG0MrJn_#52F#2;If8lVga>E5HfzGz$5bq@LG^!7IR4YzAxwYzAxw zYzAxwYzF>|44lcee$K6KO{_cjNw@CY;|Zz#BObZ6$sQbiTHjq2?e8@{3H(v>Ud!2n z?Mv8NPP_eCRBx|-ur2!59@mbq!VxZ4qNY2W7f?s-mySbgH?`BVG5dLqdFGGUH_-JR z*jmo*%@M}hH7i9kP&y54O$x6t)T*jmobO;qCewcP4A6YqW9 z$^HhHPIfzb{*I>*r`MkP3Ci?*C;Khx%M}_of9Z5O6&~L4eOdM&u!}V7$O3 z>-oT~h7EZk?>AlY$R)bL>l8Tgo+Qh8&v$7^1>lusP@J5cNRL^pcz)?$jvV=>29`0Y zi2yHser;4+wNIM?n*o~vn*o~vn*o~vn*o~vn*o~vn*o~v zn}Pph1_p-u=Nb3F6fgUt%Wze|{V*=C-wMQK5%dpCDSob@J_!As8{*Rpkp!yaYC0?f ziHyQM{XVr=QSOpkY=$oG!1JUzwwU*-BFhgG`^8m$9-_nw&3zetL&$F${2tZ^CBDb! zw+%oxMKXkE67zmBiFqHH#ClkLC(8dLfJ`NA5;x6zV^&ejdfxGjNkI3 literal 0 HcmV?d00001 diff --git a/ex1/ex1.c b/ex1/ex1.c index c4b111641..f4dc679af 100644 --- a/ex1/ex1.c +++ b/ex1/ex1.c @@ -9,6 +9,28 @@ int main(void) { // Your code here + // init x + int x = 100; + printf("Hello there, before we call fork(), this is our processID is: (pid: %d) \n", (int)getpid()); + printf("This is the parents value for x: %d \n", x); + int rc = fork(); + + if (rc < 0) + { + printf("Forking failed \n"); + } + else if (rc == 0) + { + + printf("Hello there, if rc==0, this is our child processID is: (pid: %d) \n", (int)getpid()); + printf("This is the childs value for x if rc==0: %d \n", x); + } + else + { + int x = 200; + printf("hello, if rc > 0, this is parent here (pid: %d) of child %d\n", (int)getpid(), rc); + printf("This is the childs value for x if rc > 0: %d \n", x); + } return 0; } From 0ce7db0679e00e865d164cc8a32eb498f94d8dc6 Mon Sep 17 00:00:00 2001 From: Barbara Hunter Date: Wed, 20 Mar 2019 19:01:07 -0400 Subject: [PATCH 3/4] ex 2 --- ex2/ex2 | Bin 0 -> 8704 bytes ex2/ex2.c | 25 +++++++++++++++++++++++++ ex2/text.txt | 4 ++++ 3 files changed, 29 insertions(+) create mode 100755 ex2/ex2 diff --git a/ex2/ex2 b/ex2/ex2 new file mode 100755 index 0000000000000000000000000000000000000000..c79504c464b9ea62f583bbacacf09d6d4dd646aa GIT binary patch literal 8704 zcmeHN-)kII7`@vj8f(&Qz)JiD)8J}VOj0!%3xRB!i5nWyZ5p*yWSY%Rnx&iFusbmc z5(&ntV-4g{{{le}_CYj?Xhf+i2#p1y4*~n2Wg-#sC`DY)xpQZK#rDYuAMQuK`+evB zIQP!EJ1{dhS8o3C_nkt7_6xDRPYBTp-)IoxqA-vNaUVPex2$;ddGo9}c9ONV7OI8+ zipX;f9W86zJTqR~MUD^G)(M5NHqoe@JuJ(y7aV53)$?_?;9}79vRV`|E~jD*Vz~my zmv`n8`Epe~-+KprzQ@EbPjt`k_A5{*1k2UXpH`>dO}Aw&~G6Jk4J zV1^;YIe=wE_9G43*MScpzJFMVX~etXad@?{FP*%%vNITuOWkAm843g54DXuD=ep9V zL|1Y#odl*m0OvXq#S0%7UOP7WMRT(Km!CJYPod6$hv4EMRtRSE&sRTN~9)Xj;VEEVln8MUcn^r(8 zpcT*xXa%$aT7myUffr)#Z?Tn~cx<)r3Z8Rft35va~WDbLl{|Y{8WY(1`N6GHarZ1KSA%BTi)+7?yM~B zh}Km;5Ppqr!utk=th>mELT?iVR=9vRIsIi~IsG+Ezv&fZd(RxFSUtpUvDKDdhD%GE zQFj9qzKt%f`Q!EpL~mL4?>igty-Fl#b5b$trU43BTJEGS-v65H)Z*jEZ>pkyC|vCL&Hd-r%RFN5ZCxj zEVgfyN~LK&N^Wm4yPw%rW{)x}GJBfYSIh>OeZq{IZGVJ}@0Oho-Y@5$5Cis9HfI|s zF5vacm`x>*8Ij}x5y=~sKj5KM+7|P{Z4eEU{7_XyNKr5gX&oJnWN);Z_3Y!#KP?l@n_s7jEmf?1hxWydC+}WICI-i43Cbteqh^A_2a8 zAn#^Ai$iN?im(^(yzSrv3Q<2$xeXJCES&G}vu36-i#<8#*f=|%;Pi)QCQ=y@;RlWV zqQFl%v>;)1YbY%1_$}mKiT!UM!M71arqVi4R%4z^R^y{}n4hbv+xzQqtPb-NQgwfS z+5Z0?@c$Qr^XVq!>Rh@1c6|(-fbZ4BlA8GY5$uH80|cmF);&->(0b4AVjZ-90OF^n AaR2}S literal 0 HcmV?d00001 diff --git a/ex2/ex2.c b/ex2/ex2.c index 4245375b9..c60f08f69 100644 --- a/ex2/ex2.c +++ b/ex2/ex2.c @@ -9,6 +9,31 @@ int main(void) { // Your code here + FILE *fp; + + fp = fopen("text.txt", "w+"); + printf("Before forking pid: %d\n", (int)getpid()); + + fprintf(fp, "%s %s %s %s %d\n", "File", "write", "before", "fork", (int)getpid()); + + pid_t pid = fork(); + + if (pid < 0) //fork failed + { + exit(1); + } + else if (pid == 0) //child process + { + printf("AFTER forking CHILD pid: %d\n", (int)getpid()); + fprintf(fp, "%s %s %d\n", "Child-File", "write", (int)getpid()); + } + else + { + printf("AFTER forking PARENT pid: %d\n", (int)getpid()); + fprintf(fp, "%s %s %d\n", "Parent-File", "write", (int)getpid()); + } + fclose(fp); + return 0; } diff --git a/ex2/text.txt b/ex2/text.txt index e69de29bb..96a3e83bb 100644 --- a/ex2/text.txt +++ b/ex2/text.txt @@ -0,0 +1,4 @@ +File write before fork 4563 +Parent-File write 4563 +File write before fork 4563 +Child-File write 4564 From ccf657140adbea9380f47dfb4eb678e37239e59a Mon Sep 17 00:00:00 2001 From: Barbara Hunter Date: Wed, 20 Mar 2019 19:20:41 -0400 Subject: [PATCH 4/4] ex 3 --- ex3/ex3 | Bin 0 -> 8616 bytes ex3/ex3.c | 17 +++++++++++++++++ 2 files changed, 17 insertions(+) create mode 100755 ex3/ex3 diff --git a/ex3/ex3 b/ex3/ex3 new file mode 100755 index 0000000000000000000000000000000000000000..fb836c912ce427a34758a9294399b9786e00c8ae GIT binary patch literal 8616 zcmeHNO=ufO6dvWLHHnGkOL2b^CZ;NB2)2^;UuqFeT-Q+`1i~Oi>u8BA8EH+T zLcm}GHN_>z^yXU&y`<1fDKsuEX>Ns_dg!5n{z#BQ0zH^gs(#<>jI@%Io_gqE9=v() zn|bqg_M2H4&FK3-fB*YwArgCqSlc6n7=do@6XLp%@Pv34nu98}kUj04_ZHt_ZNDV? z;bRf={D45E^4__8e~9j%?5`6BV{Br-QAQ{g`d34GkqqX`9Ky?>Y0I<|<8^wnPptI- z^EJZNVxwC%nC~Z(?}&-8*mf8)`JOTrQ9f1nD=U5-b%XgxFvmA-69ALJO)Jj-?Vm_OO>x2ERkbkZdD@s)g|CTR_{v6*i z(}6gikL!+VrS~1o&Cb8=&CJ?0EC=2bnDU8!`6!2Rb^SQLvot*^#1PC7>=>*SDWmVL z49hrj&-N`~#xEQd;vDQj`p~#AmTK2xyv_O&{f8}xSuArQp=_I6ZPX_#L2gW9fu?=|M(cNrHx zcM8fjzQg{zKjX7a^u~hmoM|>fe|chh0^W&WEo;^$?9w}72E1{?#90mp!2 zz%k$$a18wS44lnv{E}OLAiwkeV)E8a6uHgUe}mb$b4#>7q~rb3dQaP(^=ms~WE0y& zahtou)&&&0?)qWE^C-~!YZ%>|JKPQLVVk?UliM42PTu?A+DNx~)Nt)k(&l&rou@lBl85{58e8+%ez%k$$a11yG90QI4$ADwNG2j?*3^)e<-wce7 zC(m+(qZwZI>C13c#QiWXuiveU8={^Z%_#qB5Yium&vOp?68o TW5l54&a&3!Yu7a3fslUyQqnX_ literal 0 HcmV?d00001 diff --git a/ex3/ex3.c b/ex3/ex3.c index 3a3698c1f..43ee8339e 100644 --- a/ex3/ex3.c +++ b/ex3/ex3.c @@ -10,6 +10,23 @@ int main(void) { // Your code here + printf("Before forking pid: %d\n", (int)getpid()); + + pid_t pid = fork(); + + if (pid < 0) + { + exit(1); + } + else if (pid == 0) + { + printf("AFTER forking CHILD says Hello pid: %d\n", (int)getpid()); + } + else + { + waitpid(pid, NULL, 0); + printf("AFTER forking PARENT says Goodbye pid: %d\n", (int)getpid()); + } return 0; }