From 49ff1b72b53abc925347fbae061bfe75e0fc1f93 Mon Sep 17 00:00:00 2001 From: nateyoungren Date: Wed, 17 Jul 2019 15:22:56 -0700 Subject: [PATCH 1/6] Complete excercise 1. --- ex1/ex1 | Bin 0 -> 8480 bytes ex1/ex1.c | 21 +++++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100755 ex1/ex1 diff --git a/ex1/ex1 b/ex1/ex1 new file mode 100755 index 0000000000000000000000000000000000000000..27e8388d093abe31d6dd97301fc8681a4db4d04b GIT binary patch literal 8480 zcmeHMO=uHA6n<&_DJnKasER*~#YpQR_3z+CNyXLpgVwf!2r?wi#w>2OA=zkq5QO3( zNWqidJc`~tdK48DLA;76C{$@cp-3qrV*K9jY_glGR}tosH}Ac9Z{E&)GYgY_ufBiz zxsoW>Np!7)h`Pa#mJwYi0gY%QI1QF^c<88c-WWN}y-|uq&EHy_=QRSQ95c?1MMJ#t z@n|0@8*`)OiaA0`*PL`&^Qk>wX)P85*Ingj8_Q|YGP>3>IA6uBW-HCE_I$kng!8RY z5rG{H=u-Jss184$ESPr5ETgYI-*%O6yNYLD zEu~}2%2Y8sVat+R{$su%4WADl9}wdoo~M*{=5P7p7|-(y^06Jx$LB75Zd&ib$z!KZ z7>ADqXIQkY6E>6Z7Ei=^llp2u$lZ2TyNhU0im?4N|q@4 z6y$2~FgQ#c%N$-u*w6ZNK@^)(%=p2Rd1id$8|K^%G&N&k`sxC8&-B7b&m6c9@qp$od#?HVaY)a9T|m20{f3ZR z&=4{TflMYu&G=mByK2P0*Z1c=|6CnH`ENtR_;nDw7i-3BZ9YByR9tw{NGzbMkyu1a zbaH0PJBXptM&c#p%>sAUKQ$VS0$*F}Z=oHTC|?r!jAfg-WHPym#tNpmoUyB>n8=Gs zVL4*FVA(lgRYW59TYo82HXSz-khh$S9ZAEZamn`Y+nZSdg(cse`EI=rl6k%QKgc@Y z$=Bdc9rthRuv!WmO#9UTzk^Epy}H#1XaqC@8Uc-fMnEH=5zq)|1T+E~0gZr0;D1J- zr!PLj^Y2M>u z)iqK3&hYSU#f;@p!Y@e92j3_Hg}b|Ber1sBh5XH@8%j{W=XjXx@~97O*yg%o*!CaO atl6dlTcDD>bZ*j{o4>ALMN8K2J@*&GjSrgu literal 0 HcmV?d00001 diff --git a/ex1/ex1.c b/ex1/ex1.c index c4b111641..6b6fa41f6 100644 --- a/ex1/ex1.c +++ b/ex1/ex1.c @@ -10,5 +10,26 @@ int main(void) { // Your code here + int x = 100; + + int rc = fork(); + + if (rc < 0) { + printf("Fork failed...\n"); + } else if (rc == 0) { + // child returns 0 to fork... + printf("The value of x in child is %d.\n", x); + + x = 101; + + } else { + // parent returns child's PID -> getpid() + printf("The value of x in parent is %d.\n", x); + + x = 102; + } + + printf("The final value of x is %d\n", x); + return 0; } From bc10a75a73245644fcdd6ac2ae6dab80a0089c55 Mon Sep 17 00:00:00 2001 From: nateyoungren Date: Wed, 17 Jul 2019 15:50:12 -0700 Subject: [PATCH 2/6] 2nd excercise complete --- ex2/ex2 | Bin 0 -> 8696 bytes ex2/ex2.c | 27 +++++++++++++++++++++++++++ ex2/text.txt | 6 ++++++ 3 files changed, 33 insertions(+) create mode 100755 ex2/ex2 diff --git a/ex2/ex2 b/ex2/ex2 new file mode 100755 index 0000000000000000000000000000000000000000..0969400118856b28976939e1392f845868d5b1c3 GIT binary patch literal 8696 zcmeHN&u<$=6dpH)rlr)*0aSiT+X}a7K#p4#DVIhLbg2s!DNTS1fu{bkuB|$@wO)(l z5GhjHgH;9fz=1yjaf$>7PN;%PgcGPLqK6)6l_DDj$)Fyp3NYU{I~%VZ+B1iF%A5DT z_h#PCe6uU9ck;u7-~ZVmL}W;arENlpDD>)fAub6Eo)FJK(@-f-Po1#ex6e#7+AooQ z_@9V%Zla@NN&zbk=`7&6q^CT97)IFUi#&UYHT`ctg z>(#wRw!Rq}thc_$uQ#T91UMKltm{3l1AaYObjmfyMQpHM3 z+*0Md?l4%dpzFP%^Tc84tBr(|jmk%*N?w*Kg{s2+`?0F)anC8lgEjn&-*R7DP$`d3 z%}#|f*uTDg4fZ#*uej$nYfD)v%lg7xwpx}o&wXgUpbYO1jt_+V^Ii!=%5vsW^__gI{|a~)?5F$u{1fm`L&L(pRMvf%oW*!7b&KFO7Z!9kbi7e_$IGSc zcz&Ur2c|p+NN+Bf&&)#IbLJASCNQs37M&mmpsc@Y`RhKUG5IoL7%&VN z1`Gp+0mFb{z%U@hJL%@#^zugXJNqxvkzP4=4zFwJl~=Mbt#yW)cBge4PSb8JFSbN< ztlETXld3&}R)|w8FZ=;BHPemXhP_f`u>C78R^%&k z`xZSexP6`8L3(TSj?(*@UW(qA^rq>34v)WC6CQrIx-W^>tL_D>kSUd&d?Jz9C1#7I zx`jWl=vcX8shl5()iSPA@eqvX@C$&Gd>%>(TfQ^%oto32-sNl|^!YBn8zWGHFz`QP zU}S&nJx*yP#lt>z7%sCoAI9PJ+pf4G+}KD;7INik-67gbeeIXFAd@bdfSGNp=$^TWoF= Date: Wed, 17 Jul 2019 16:11:37 -0700 Subject: [PATCH 3/6] Complete excercise 3 --- ex3/ex3 | Bin 0 -> 8528 bytes ex3/ex3.c | 10 ++++++++++ 2 files changed, 10 insertions(+) create mode 100755 ex3/ex3 diff --git a/ex3/ex3 b/ex3/ex3 new file mode 100755 index 0000000000000000000000000000000000000000..c59f9a5f8f72bb61e30fb1e6974fa599c4ec47bf GIT binary patch literal 8528 zcmeHNO=uHA6rR|sr7bq~ApXL(P*K6u`U74HjWn8K(P~>2p$tj0HLGb-lPxv}p;#&g zt@I>#@#@ush$j&h1uu%H9z3cfP{D(TQpEUuyR*qARqx6?c>CTrZ{}s@n_ZaQmv^gQ ze{K{a&>+O@Iw3?G^m(HY^TL29#5QOYD&}j^vN}v}07BSBfI!ZYbxiC`O z#Tg&0Z4(M(ZeqPs_K?yxXKZ?|)aQG@35!AKriv3|IaO&CvsJ)+IeR*ut2EW;I|o9T zZ?o#*VQ)Z_%C|u^xcOw#Oih_twAJTJs(c~UpP0N?WX=4>b9UBBUs4_F^W9VV3>7E# zOHFPBq?}G)v(gD^r6)2DuHBEPDj)ZpLR_E2jks6tYY{4Ce|RM9i(vn1_SM^8-@f9W ztK^n4oszlyWIU6SQ+D=``Mfl|KRDhK^6$q|rec4~7sPnZZ>vf`>>uylcV7PLb1*n? z>SUyUz`KWyx^)6mhMdI&*dB7{H7VDNF7dzXi-SHg&kq zV+;Hts9)HZT64eqJHRg*?(fz$3p^&Al4yl?Pv^4TDJ$Nc$fpv(lpRpcBhvBe;OONe z&mJ!I#9H1iuRn-30~&yeP0fzdcereL5!eSG)K+8<*3UeAF8#vaJql%vYY41#S#pPem%9qE zi%DEW=}Wm>PV(qm`bcj(y$|q?XR=p}iI|l#6QNM3S>Satm1!22GMPj?Z{n2goVRzv zQv8-@XP&JO!&1+y_d)tRlec1I&^@gKRUHD#jC%jOq3j)H-Kf551~dbj0nLDBKr^5j z&Gy|Fe&46Y=Gw?4m(B2sw=DgecSnP9(;WCc;FpAe_vSLwWgYA8C0-q!3Z-qaF zVzfO$WB^@@S@x8b0Q4jvQLkSoCzH~gF~_HE6SeRd({)V7thDIj2Z{#qewXU+Ic#nV zxRpZI5BXK44USjO=Qj>Oh8*EX89!#7(T@++VfSa<+9>}|0O|9$8K^j~owIc2?5^Ki Ld1cLO2xHP;zEJ%^ literal 0 HcmV?d00001 diff --git a/ex3/ex3.c b/ex3/ex3.c index 3a3698c1f..73b8b2be1 100644 --- a/ex3/ex3.c +++ b/ex3/ex3.c @@ -10,6 +10,16 @@ int main(void) { // Your code here + int rc = fork(); + + if (rc < 0) { + printf("Fork failed...\n"); + } else if (rc == 0) { + printf("hello\n"); + } else { + waitpid(rc, NULL, 0); + printf("goodbye\n"); + } return 0; } From 5fd3dd2889854b772d20d7f1235cca0e9f80556d Mon Sep 17 00:00:00 2001 From: nateyoungren Date: Wed, 17 Jul 2019 16:43:09 -0700 Subject: [PATCH 4/6] Exec, excercise 4 --- ex4/ex4 | Bin 0 -> 8700 bytes ex4/ex4.c | 20 ++++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) create mode 100755 ex4/ex4 diff --git a/ex4/ex4 b/ex4/ex4 new file mode 100755 index 0000000000000000000000000000000000000000..42b3864a826cd1ef5b6a0fe04e87c51d54b94170 GIT binary patch literal 8700 zcmeHNPiP!f7=P0=8q?a{UL>NGXY_;weg%98`8uuTp}z{(f)Xq_dOY#fyjc!8hOc``&xs zeDixV;q80*cIS`3?-jxt5u$xS2$6s$M}=4yHasC7gt|~EFXb*cuQ)GVWOP`pVYn}1 zo-K5ga>kjR8SbLSCx>G~W7H;4j#BoJvgs{1=>-zc*FJ)WLDT2Do%o>kl{qNdQ7C1j z*(x-4L-BlPK?w6bqI-lm95ANy-J=6RK3Vpvbl#o+W8rO2CTcapq|Ssji$GlK9@#al>$0J z9)&XhH9O$*F^$QW5yOCCz%XDKFbo(5319wty{g1=sP#pR&R>L#sdKE#?wE-d@6eHsHV;S1z6R-&Q%}Uzk%s-Ws7{< zz+V%;M!eD5My%)FaC(5a2+b!cF`o9hagEE(-{oC}o*zA8t zkIUZvCcP}ZFW^19wLX3rT`5t^wJz7fXJD!P zy-K0a!VhC)GFV+Rtd`ky;!@VX1AT4Z)b?#{yV}Ob8EhCZ3>XFs1BL;^fMLKeU>GnA z7zPXjh5^IC|Br#ACnm12s-s!Sqw9QeK^Dska=w-KOX5X8+0F9MP92gi zcS4EP75+qQBzG(X;x^*mvR8b)PIMAz4jUTuPrlGzo+g?ox~WAeO{A?g6=2 zR-;=@4`=Cl-uC!nzETq@Zg7l<_A&N_gbu?AD>xbCrUrM35^%T|Ld-o9Sh`BmxJGd< zhNoiqVhq0=!!m|h5C89gXVN^Ij-3Byxev2nyNy%oz0WPxa}Ujq;&><$%vVTwKy^rR JNbjDB{0DujQOW=S literal 0 HcmV?d00001 diff --git a/ex4/ex4.c b/ex4/ex4.c index 0221ca96e..2df05baf6 100644 --- a/ex4/ex4.c +++ b/ex4/ex4.c @@ -7,10 +7,26 @@ #include #include #include +#include -int main(void) +int main(int argc, char *argv[]) { - // Your code here + // Your code here + int rc = fork(); + + + if (rc < 0) { + printf("Fork failed...\n"); + } else if (rc == 0) { + + char *my_args[3]; + + my_args[0] = strdup("/bin/ls"); + my_args[1] = strdup("ex4.c"); + my_args[1] = NULL; + + execvp(my_args[0], my_args); + } return 0; } From 1ebddaac73dc862dcc1e9f078ee5ce207a8e02dd Mon Sep 17 00:00:00 2001 From: nateyoungren Date: Wed, 17 Jul 2019 17:05:10 -0700 Subject: [PATCH 5/6] Excercise 5 setup --- ex5/ex5 | Bin 0 -> 9064 bytes ex5/ex5.c | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100755 ex5/ex5 diff --git a/ex5/ex5 b/ex5/ex5 new file mode 100755 index 0000000000000000000000000000000000000000..b7b1d61b195a5e49eea41054dac79186253b2fdd GIT binary patch literal 9064 zcmeHNUuauZ7(ZDzSNF%Xdl3I@Bdc`GfnC!&tixeDc3Fno?A(MR%(Jw)O+wQq-rR2O zu$oyX4Ot`)vI&Ar5dR^v2azG7V-7Z@U>QU9u!lWNO~i>0K9nJgzu&p%X34FS;gb*d zgLA&$@0{;^`R;d4l9O}t!_6DFmI@JQ5+b)q2oXd%xI~C!A_OGFgD4RcDf|0&7%v#l zJG)w2;y^Cu|}|y#88N;$hHrLI*{@ z*fpkJEOPZ!%B(#;n5{K={e5ts4?{p9u1;2RxMj*lHqj>TkhY&flW<9vLo{c+AId~B6thw6UNI900*~!ttbV_Dy>yG|hH(Vba?+Ww3 z%q7rL#?x+&+3bz41>+f?>yO;)Zv_WxkunwixA;QZU%$2|ulL92#Z=cs%2?En*64!x zGTPq*+JwB`-|dkOy8S-gwR6ui#`c}=do1Lc2XIP4J7ZjGo>Z$4ZTKAMBn}DD4Al(n zt_4uh4_<=42Hg+MwZRyB)(No+`V1VLhF*@s{(5oW$9PNLQ3f#Hedc;2<}QT7IoULx zwKk=agPUTLsTerrVHA#gFMi{%4ZFL4DU3W3oxJ?Tk6maBp#)IGeOMtV#Om>z&IL9C zx3Evk20TCg@N=VH__{qP?Bg>BZeGX7O5k=Zh-cqq);32wwsjz`rv>xbDfjV zM>S`@eDO2jXTZ;Zp8-Dueg^&@8F)UD|0#0xw;ZC06qfvsulh(qMDoV`1>-U!EKg(i z5GhVw$s2PDPtS{Bk>Bbtzo5)}BE`)cfx_R-d_OZ+9>9QaP(asv7OFjOoUi9A<GwQ|9MT+Cs7|%Os zB1Y^cUI(t;M*Od;QEwHD+3B-^yfIt(s#>kmoO{P`HGeC7sW3H{H%jHGvOHdaV##_?J?7`GNRPW8#i@hE(dXmj2rIU zH5_&*36$u^3VA&7SOYhP)&{f>rP5iGq!YxPNZQ0bz&!9E?j_FPy4xNmjezoOgt(u$ z)-wQRnb8<~4gw#JChbg8(FCcLv^feAkofPwA~~AC3z|dYwu!s>C?j7xD%yB*A{IrH zW8$%FTy!;w(nB~h35%^=Vq3S^(Iox|;RI!#Rc;+^l>xOnmkRJ`%sC(7ab6GyCGP(Z zcs>)nR|xkWw@vd24B>eS?ip2oPV)|Mw6jY|FY0=}&%Rz7bdb~sBwJMI1)c;JFy;c-RFYoVp7k#(mLbx$sIHz)y zb16r&@vy49RNW2Ry0xuVWJ8Oy+EtUY(Dh1n)~K^OYwOZkk?vY_R$*=Z>6N$OZ6f{# D_=psJ literal 0 HcmV?d00001 diff --git a/ex5/ex5.c b/ex5/ex5.c index cbf3b8e61..3e49d6152 100644 --- a/ex5/ex5.c +++ b/ex5/ex5.c @@ -17,6 +17,38 @@ char* msg3 = "hello world #3"; int main(void) { // Your code here + char inbuf[MSGSIZE]; + int p[2]; + + int rc = fork(); + + if (pipe(p) < 0) { + fprintf(stderr, "pipe failed...\n"); + exit(1); + } + + if (rc < 0) { + printf("fork failed...\n"); + } else if (rc == 0) { + close(p[0]); + write(p[1], msg1, MSGSIZE); + write(p[1], msg2, MSGSIZE); + write(p[1], msg3, MSGSIZE); + close(p[1]); + } else { + + close(p[1]); + + for (int i = 0; i < 3; i++) { + + read(p[0], inbuf, MSGSIZE); + printf("%s\n", inbuf); + } + + close(p[0]); + + waitpid(rc, NULL, 0); + } return 0; -} +} \ No newline at end of file From fc96941b2523eec5cac83ed59d288a7be6adebce Mon Sep 17 00:00:00 2001 From: nateyoungren Date: Thu, 18 Jul 2019 10:39:14 -0700 Subject: [PATCH 6/6] Exercise 5 working --- ex5/ex5.c | 10 +++++----- ex5/exercise5 | Bin 0 -> 9064 bytes 2 files changed, 5 insertions(+), 5 deletions(-) create mode 100755 ex5/exercise5 diff --git a/ex5/ex5.c b/ex5/ex5.c index 3e49d6152..35d616c9a 100644 --- a/ex5/ex5.c +++ b/ex5/ex5.c @@ -20,13 +20,13 @@ int main(void) char inbuf[MSGSIZE]; int p[2]; - int rc = fork(); - - if (pipe(p) < 0) { + if (pipe(p) < 0) { fprintf(stderr, "pipe failed...\n"); exit(1); } + int rc = fork(); + if (rc < 0) { printf("fork failed...\n"); } else if (rc == 0) { @@ -37,6 +37,8 @@ int main(void) close(p[1]); } else { + waitpid(rc, NULL, 0); + close(p[1]); for (int i = 0; i < 3; i++) { @@ -46,8 +48,6 @@ int main(void) } close(p[0]); - - waitpid(rc, NULL, 0); } return 0; diff --git a/ex5/exercise5 b/ex5/exercise5 new file mode 100755 index 0000000000000000000000000000000000000000..f112566d0e41ce5f71e9db58504e7a3a09c66467 GIT binary patch literal 9064 zcmeHNUuaWT7(cN(JO8EiVeF4e?5MbbwW*VJGO-meUYT=sc2EZHm^QafXqsdj>$nasfKaA0bJ;)fdIGJt~EV2h5eDJ}IL^kkY4@HLE?|1IGF}a;X_Oyrl z!8zaeJKvvt=Q}6K%{jSt?~nV-g$OhVky|2!2%;TXCd5e*f+WOKXeOGJJ>7eaH;va{ z<7hnv>ft{k#<>AQDSM5+-g*<|-&8*)G)8U$>8M5vDYMpimXbr>culJ@8K_R{q==Wg z#^g&yt`ab{!gZyvOu_6HmshMB1`3=8bn-$8)DZ%(_=; zQGNrNtQ}7dX#;P(J}elgdQj_$YpE_a6jF{R$KuJTj3)pF!5q}qC$5dh`C_T7BxN*`ja1>H{L(t! zliGy1Hr@kIM|$u+-M{a^E5@FE?t3icSqETJOb26LYMs=m5H0u|Xr~+!q7keS+}#U+ zq6fGHeha(@oO^>gc5W16E%*flm0?_<0rA4+}jcjsJd#M*_>xF%aiGxpX* zynk!-SRx8cdIpVtcgMCQRtMX6oekfOE&FTo;|`34&;n>;4R#0`Wi|bVOM&MhH&Lf) zGv?1Y{M@J|zHTQPb)0kH-feuW1Rmsqd=4GUWUZ05-EGJ#-VYP|8znUk0&mkMLIB~-)EW3lRd$S#qAxC!aq&@JT+H70;7v)B5zzR?}bn{(dCV~$%#3*K0(*w&Sp4F zi}Eg|x?H(~QKdf_hg6ujQC<$sMLt2~?-eF)nuYD(!Xt0Yls9-4UoeZjaiP4_t2yIn zrppY^D0$=a^4E-Md|KhJl<-Xc$ME&S#9aB3W05z`m5UIs7_;bMcXo1Owjo&D0dPTO zbIB}@-eQ6uVu&&((~B2I>=GuFR9>eF#_Z%wAaBf8zFSyWp!thRF;xL$=}yrF)h)a_ zZ@zRjc#_YJ;TiM9^{DE{RexOd@2LJ=)#p_Ip6cIM{RilU z*k4?~9zyq_h1S*Jr5Fb*zagO*ALlAJDYa6%PAN?3Dy5y2zNfUG(l?a)D1Aw3kkUCy zEMes|r4y7+QL++=RA?+^C!(Qe!=es$)WdBe9Zy@K!ALw|McdliR*1orJzR@hGb<2R zJ-4o-0IKDz5uaCI0B8G5|Inb!=iF8BY*O9;`cYU(kI?;zSS;dw%^UUa!?l{P(|nWW z?V9h0)7Sl zV+ER9LWk+v+$DK+9T^yw1F>N_G#as^;-KABa>k>UZKp-4i#KlS#$5K}5*at#xm!5w zP!uRJjvewu;;{y94DHPrA4sG!7C}3JH6G7W?u5((56WGX)41-=4icJxJR70hL%FKy z1G241l$s-u$0G4;I<8=h(2i&61qw*~cVLMeiQxsUfzhmmyZHz+-!LLtcyc0^MB+)Y zB{L*C8bs-79GQg0&JMAAo7meR?uKxJGS4ozk+#Z!T%Ah=coOEEkMKAzh=UUM{|7vu z2|g}_dym_q@i<&~o`QQurO#>H28?m46m_Am#fLojEf2Olc-VvA_Tb|lob%u*5B|u5 z&v@`B9?ZMmMl_T_-OKY_k9VlNR>e`0`kx7_*Ng`0;{84Eq94^Sgd6k4Ybr;$mU1LB z6jptQ>bJqRW^bzb`V#q`McLU0B_Jdgm>An~1*w%>fbG literal 0 HcmV?d00001