From 048eb21da6dca5ae31cf897020e55d88b9df0946 Mon Sep 17 00:00:00 2001 From: AM_Myrick Date: Wed, 20 Feb 2019 15:05:29 -0500 Subject: [PATCH 1/9] completes fork exercise --- ex1/ex1 | Bin 0 -> 8344 bytes ex1/ex1.c | 11 ++++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 ex1/ex1 diff --git a/ex1/ex1 b/ex1/ex1 new file mode 100644 index 0000000000000000000000000000000000000000..ce1e3543839e98572fad0c59ceb28ac9436e41c0 GIT binary patch literal 8344 zcmeHMU2I%O6`u9R&L(lz8#ig3q>yb$P}1U!lO~Qs8{+j}uEF_fYKK-dxmkPH_O|;I z?cN0^qF~{)>JnUn#6x)iwJH)2@n9a1EL6b3RY)F?5+pr_s)%2rF}uClCe&(|88HnS5Zq6c^_nVdz)K$xIZ$}WR9q7YH<^$QK$Qw>0oG$* z$5v{VXjoT3Pl_LdLZQbj>rIH>gy?}zi({Y|ACHZnZn5X3ZPdmElx4XbdCQ7(eQ2p> z7tqISSb;+CanfTyKWGVw;8E#sv3WTn{)5VJ)%H}fw{h3@RJ=Zw%oK*|hngDe8+S$W z*~m^kZnn>|2M+bMp#t-+%YPTdN;lHE}cZjRDrhL)8yl z+DI~7MwJH8##-+#kwy2hMSVGUdP#``k9|z@7WUi~|=}w5iL2^J|8<+42nY zJhU5EHUA~z`_F5m^t0og&f>KbM)8lv$e*T<#a`LSm}0-5A;T9j^7TKh?&$ zeHVzET1i8mGU(@0<*UT|*qvc^?A=K+N#kMh<2U+Af@?I(p`W+U#7SW4XS1bJvHi}- zb9YpsYNUO}_tzyO=^5X-o|$v)cZ%1H(KX*DvEn5f(W_J$r$X|+fE#B=c-tOAQy#|bncl}dqN!xh-9V@)!w-|3%@t}v+~l?Y%<<^c(c{q*QFHSA{QSNKhWCx@$lB3-a^JIg!e=qi8R#j+*8o(jxX$J ziZtxnX2b7ekDL7zl{nWs#r>2M;XLfd{mR0EI~x3SqC~toV6tDS5NB?@N+BNI_)>*+ za^nGo^>yRR6ynH@FQ1DyH@-sQy>sK$s=3U%_|-~vsw^IyyMJ-pshN9^-FQfyMBqCb z{A$(Q{ec6fd8<|9W##XiyBBfGuU6O(-1r*07YREdUH7Z|72aQGqn}U7at?Ikbt+UA z$8I$*&F|e3_4m>|V%K=zt588T=9$l+;L{%bLBX+)+E$d>LlvKz_XqEJhsGDqLt5-$ zUxuC2T7KbtzD#&I{}&tAx3ryF^*S~vbg+n>@9Xya7OdBgwVj3QbxGv$J;US6>Z#+~JUaJX4F~2S5>T4*dHPCHO9#j-aFa;)hmSaJY1I#VL}wfiH0by>O66t z5&2<>Pn_At2xockJiIRQUl#lN%tf{@63%{l<$pnVSbT7jzYxC32}u0{;kERY_U>bT zTF|ohSbaGwZx#CcBYkTAD$2CdW*=Wh<>?|So;3$j+1^;nj9b}U-i#H7R9`lIDwVJj z@yMRWy^ZCC_!=x}#&WsXX)}?ra;H^)E|yN1@j^O%np7N|Ns^XJG%>V;JTlFWqtS!y zX8WNwlPqN_=>-4F{#+fij6=sMgI?J^H{bUe}CZFWan zy4u;QzN72Q7qr9w`Bp9wk6AIf>}zgzUFLbO`n=7oY2W8jm+s3wGoH_ygRxAUFaA0Y zlT2{6pFWrcW#Bi<;edLXxArXfEb8><|OO($Jz>!~q zhDFZnzrgAYRd`OJk31A~LIlyjcl>8XzeVI`WPw0&o?`v`>GA5nL>SMBd}ijp2ly_~ z7t~e6{2a#f>(od73yS`sfcXUdxJ?KM=~XhyHQS!2eVji`bS Date: Wed, 20 Feb 2019 15:09:12 -0500 Subject: [PATCH 2/9] answers fork question --- ex1/ex1.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ex1/ex1.c b/ex1/ex1.c index 27d48c747..a9a9d0fc2 100644 --- a/ex1/ex1.c +++ b/ex1/ex1.c @@ -2,6 +2,9 @@ // (e.g., x) and set its value to something (e.g., 100). What value is the variable in the child process? // What happens to the variable when both the child and parent change the value of x? +// In the program below, the parent process decrements and the child process increments. Because they are two separate processes running the +// code independently, x = 99 for the parent and x = 101 for the child. + #include #include #include From ad76d2fc9edbc7287345cbba971ffea2639ca18b Mon Sep 17 00:00:00 2001 From: AM_Myrick Date: Wed, 20 Feb 2019 15:28:33 -0500 Subject: [PATCH 3/9] completes ex2 --- ex2/ex2 | Bin 0 -> 8432 bytes ex2/ex2.c | 19 +++++++++++++++++++ ex2/text.txt | 1 + 3 files changed, 20 insertions(+) create mode 100644 ex2/ex2 diff --git a/ex2/ex2 b/ex2/ex2 new file mode 100644 index 0000000000000000000000000000000000000000..47c46d195e847ddc604b34b2c3a7ef3265d556c8 GIT binary patch literal 8432 zcmeHMYiv~45k9+%!GOJ93lfFRd6d`*Re{Uedu?yC-nDk` zHa2QnRFg*4FsYFo{*)&nz1Soyr?aaC7 zv+uoLCsoy76-VBkGvAq+Gv~Q;#$RpiX!HAg0wo|mBbW;~w5_C}jft6gp@)1bu)4-jR&dcO^L>3vEL6dp1yQf-CE#8Mjt6(TGF)?;7K zmP(drSXMv>l^;WjLXTP2JFoQ4D?QL@d)ta}{aIzm zOFu28gaC!!=SWX2nUeT$5>n0kReuZ3%Ms;2s2Z-=nuvGTZQq)RRVCud>`>KEeO*=E zb}f_AYUH@tKFjXf(8lS$_wDz7r^gd08bJgrjNHQC!mo1rw9*wg^AxtpY;Xs6@(SCBWS*R zczWwZZ)(s?(s%j^(c6@V0utf_B$`SZ!WqEDw zkG;x1T0LGr?6YiToKB`+v`GyP&mulBbMS~%z@)(4QW&{P_ue-U}_UY2d|wdbxJ)^peNk+-Jzb#{yvRg$hgTKYVh)JJ!|LsI$G zFObfSvUM#Ix=c)$K3a5@nbJP08$wzeGCH=~bRY3+L%3ui_T*%(Boed-=vRn0$ool$(#r~A& zCw5j6H(5$Up492}zv@kWWZb7W z{4sl-_udx{MGi&|MGi-d@l$i__rW;%#P;OwwKBu12hhk+na)+Z}^*n6(<9&!SLv!rr@S$i}YaiGmG_L{m7Et!Nzp3J`${s1UEGW z!z4%YO~GP$ukt(`BRkIfhfUrscW2=44E%r00OBIVL3Gv00$QT@Gb)%-&lJ(3E+stM z5O1wj^0>1q6_2=!?=LQBzd4gnF@Hu~GKiVZsh|q6%mvlHjD@M3wu#`lm`jCC#A-!B z5SyJPC5M;_{eMj1ko#xe9v{u8gy=ez<2|74 z(a($IG2hdQZ&dAnS3Jg{%>T~_-kDy5m(=**Q1l%|Zz<}P|0o{u^seUSPlY#ib!U@S zHoQZ7NUN@@*^!m(wy$if*Q&Q~w&9O5NbLcN2Jo(TiU%l0zGPFT!uE@&f0geF1rX8MA%wKFls4|8>F(`Trc@EBtE&?oIgl0^`&J z&ZGL75I-WE=VwCwV3|tc0?`odw+hexPbzujVexkP1>r33ou4a8zEatjZx6ElhQ#6B z9GxPZ{rB3rNqBfpY_?WL3%Y)mo2$Gc?a#mWwvc?G^%6a4D`RDQd$k@hmwYm;0fSOm zNi##Kr&!A9OQgD^2_t5u(itO~9TGjMfx(1nnK5lgT|-@AAx?b7jc7U@9X9AinI0Cs z>F9uI#Igee!=&Qi43e~5qUKNyd1M%E`y;zsjn+La2Bp2+VliQ~e11=4cYCwDMdsHC zqEx2Qsw)e6%YI?(>e$;9=`i-TwLRL}X>>-KI$GJP%*yp-veMxX&%>Fqs1;RdzQ#sZ z`p%o&^ER`loxwwX&@182@fop9%IJ?KW1RnM-%F~oc+$vbOd9u`%RF(!cV{xnw#+Na zl%&@@WfU=yoN6qXKXhj--4-~*=|+T>86L2r-9)XlP5V)!1gM!F6k3up4O*nBy~>LA zDXuS>)w;8kd#H-XgvMNdG}AA%*l?2U+0;tgEnhOznRqJcVhn0an~5kZsM=t{5}KR~ zjjCE-idfEh2#q%(38m!1X=cCLcKtCj0?t;o_n)nSI`t48i1(0ByzUxJv(RYo52y^u z+`0R2YaIX6k)6$1B0d8}{15vq>ntB9hOZdh?}+0-!%ktUnAK{ia%-KWw{3e0^1yuo^R{e6gz+;C#-Vcuv#<4#15ody)rZ#8s z&fj5bfGzUg2hp)@SH*)@h#|>5=8&r@gGV4*E@x{;VU) zA@~au;6cCT(Z}yIXbmRT(=Y5j@6pFQ9n>4H!|^*05&CD#!o<=4v)CyrN96b17xY1|QP{XxDgsO #include #include int main(void) { + FILE *fp; + + fp = fopen("text.txt", "r+"); + + int pid = fork(); + + if (pid == 0) { + fprintf(fp, "%s %s %s %s", "The", "child", "wrote", "this."); + + fclose(fp); + } + else { + fprintf(fp, "%s %s %s %s", "The", "parent", "wrote", "this."); + + fclose(fp); + } // Your code here return 0; diff --git a/ex2/text.txt b/ex2/text.txt index e69de29bb..fabff7c7b 100644 --- a/ex2/text.txt +++ b/ex2/text.txt @@ -0,0 +1 @@ +The parent wrote this.The child wrote this. \ No newline at end of file From bd5af33ddc9c6b0a84c8b0294b583d597621c8c2 Mon Sep 17 00:00:00 2001 From: AM_Myrick Date: Wed, 20 Feb 2019 16:07:18 -0500 Subject: [PATCH 4/9] completes ex3 --- ex3/ex3 | Bin 0 -> 8384 bytes ex3/ex3.c | 9 ++++++++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 ex3/ex3 diff --git a/ex3/ex3 b/ex3/ex3 new file mode 100644 index 0000000000000000000000000000000000000000..f6cacda4600f7f23be1567d7a4d3fbe6b1931643 GIT binary patch literal 8384 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 literal 0 HcmV?d00001 diff --git a/ex3/ex3.c b/ex3/ex3.c index 3a3698c1f..d0516f13f 100644 --- a/ex3/ex3.c +++ b/ex3/ex3.c @@ -9,7 +9,14 @@ int main(void) { - // Your code here + int pid = fork(); + waitpid(pid, NULL, 0); + if (pid == 0) { + printf("%s\n", "hello"); + } + else { + printf("%s\n", "goodbye"); + } return 0; } From 15dfca5ae6ef7a0f7092d5ceca631519341cf07f Mon Sep 17 00:00:00 2001 From: AM_Myrick Date: Wed, 20 Feb 2019 18:03:01 -0500 Subject: [PATCH 5/9] completes ex4 --- ex4/ex4 | Bin 0 -> 8392 bytes ex4/ex4.c | 4 +++- 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 ex4/ex4 diff --git a/ex4/ex4 b/ex4/ex4 new file mode 100644 index 0000000000000000000000000000000000000000..39f796d5dc240d8bb0cd7b028a1039f0f52b6efb GIT binary patch literal 8392 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 Date: Thu, 21 Feb 2019 15:08:38 -0500 Subject: [PATCH 6/9] adds code that handles fork's failure --- ex1/ex1.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ex1/ex1.c b/ex1/ex1.c index a9a9d0fc2..74cbf04f9 100644 --- a/ex1/ex1.c +++ b/ex1/ex1.c @@ -13,6 +13,10 @@ int main(void) { int x = 100; int pid = fork(); + if (pid < 0) { + fprintf(stderr, "fork failed\n"); + exit(1); + } if (pid == 0) { x++; From ec194e674b99d4340cd6e0473d337e89f7b33188 Mon Sep 17 00:00:00 2001 From: AM_Myrick Date: Thu, 21 Feb 2019 15:25:30 -0500 Subject: [PATCH 7/9] completes ex5 --- ex5/a.out | Bin 0 -> 8744 bytes ex5/ex5 | Bin 0 -> 8744 bytes ex5/ex5.c | 27 +++++++++++++++++++++++++-- 3 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 ex5/a.out create mode 100644 ex5/ex5 diff --git a/ex5/a.out b/ex5/a.out new file mode 100644 index 0000000000000000000000000000000000000000..dbe17a8da8f9c323e73c6a128ecdd457bde3d997 GIT binary patch literal 8744 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 L=?g5Vs9XQvwyiD^ literal 0 HcmV?d00001 diff --git a/ex5/ex5 b/ex5/ex5 new file mode 100644 index 0000000000000000000000000000000000000000..54faf1d9992aa013ecdd6fce84fd2ef93a4ac8aa GIT binary patch literal 8744 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 Avj6}9 literal 0 HcmV?d00001 diff --git a/ex5/ex5.c b/ex5/ex5.c index cbf3b8e61..620c3a239 100644 --- a/ex5/ex5.c +++ b/ex5/ex5.c @@ -16,7 +16,30 @@ char* msg3 = "hello world #3"; int main(void) { - // Your code here - + char inbuf[MSGSIZE]; + int p[2]; + if (pipe(p) < 0) { + fprintf(stderr, "pipe failed\n"); + exit(1); + } + int pid = fork(); + + if (pid < 0) { + fprintf(stderr, "fork failed\n"); + exit(1); + } + + if (pid == 0) { + write(p[1], msg1, MSGSIZE); + write(p[1], msg2, MSGSIZE); + write(p[1], msg3, MSGSIZE); + } + else { + for (int i = 0; i < 3; i++) { + // read 16 bytes of data from the read file descriptor + read(p[0], inbuf, MSGSIZE); + printf("%s\n", inbuf); + } + } return 0; } From 4d0b384c6c437b41e0bed70db7c1353f89670da2 Mon Sep 17 00:00:00 2001 From: AM_Myrick Date: Thu, 21 Feb 2019 15:50:10 -0500 Subject: [PATCH 8/9] completes ex6 --- ex6/ex6 | Bin 0 -> 8536 bytes ex6/ex6.c | 15 ++++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 ex6/ex6 diff --git a/ex6/ex6 b/ex6/ex6 new file mode 100644 index 0000000000000000000000000000000000000000..924eef6029a35d56bc2088f667e68626047753d3 GIT binary patch literal 8536 zcmeHMeQaCR6~B&?)`iq@LkppWVM;5Sj+myDHhh%EY0|!+q-7;xOl$k<#7<)2*qQwd zDccxR_?Q*Kx@lt7q)nZWP&f6Djz2awX(N!*mW@Bc(6&z7q%gshmXEb!MP*y-{my;o z*zdhK2x zT&!8pu+9h_<#v37spt_)dWTu>FzX3D%MBAM{iD9o)5G?>v>j!Xgpw?!d)~I>PTh4J)Cd_c`eCl(EFelMom0;`-(rmmzMyQ0}g}IhE|&xZ&nhyeXAT=SQ1HTQ)Xr z+z`oSBI|X($v(+$-_fgUqWPAgr8Y0cLl~96apMoW$Imr(zA|$P z>^u)V>=g#T1<%R~_zl38s0I}Zg>|W{Lxp+jr)k-!OfzT2`X4a+haNBoV#$;m$tKg* zfXZ3%Ox{uh$y6epQT?e5WCjzKl^jk$r++kN4kXjDRPteB$sF0qTIO&pnN|;FlU71) z@9J#ZYOarLDCL?rm9pz2w<@!=|oSgFGWTNhcjt5YTBX| z1*v0xtfFc>v_9;I-n35qc$AWLy)>D`j;&S$jD7c8&tQA_)d=(X^3x0_4fM=YAKUEjjinJH0J(6Y|xO1P*I&e0vRn9taJ_Oqyv|;h00DkaOe3u?Z9P>NZuHGH(-p{JiaKbjK?Rf zs^YXUb}TTZinp!>R9t-%-gVctB1ilXshplEBCTFYJPqCHY0WPuo|=AoQuFo1QLQ|U$Pot@Jnp4mJH5k@6pX9rt&u%W1F{Au9wv&Bkcpo+AQEJ!+Q!t7Ckoca{1CXE`W~DW5j90H-0}-RpaiMwA znCO@`3ddih5uZ(8Di%+493unotU?ptUx=<0PRu?7{1=4&ie3PE0gQDV^L_oR$F{W9 zsYl*`nVFKA8&PVE_s$sOu-*8wQJ6N8)9TmXy92e66yt@Cli*H56(jdE7=M9k zm|X@7I%kY`Ux*vG)an*nHM8$tEEZp#Dvx*c^U?b{3xA0AMlrXmk5}udYa)7Yv~aPr z@L^XY^*Ug@bkRRM2xa5(_pEU9pJcqd3jgdXeAr(2d$hRp&&Jr4&$#U``7^Xuzqlv5 zJGv*jH)>8DDA)JF6b6p$>D5eo+}>4*RBR-dh==La3~vsvPNnkUbS$08CHgbzcusFs z-wOX7E$AKX|7tXaR!|)D2&e_x1NsO$PUGK$8G8%#80bxy8~R>S@;$su`9?#&6}1Zk z2Yd@dgwwaE0s5aM0Zx_Wm0E>zk{|tdvAB<9gQ0D~hP&%7e<<*%+OqtPwYRKVNigZR z<2ees00EpxcQ>BrQQvEXMT4Oys5WfMT2YFf?>!(zAYHg=QxeS0obuen2ddzJ{^Jo zj}a*OAM6y+@k~i*t<9?Y*_q($iQ2HpF1VV@#jjbxyzFJU&WV3R`i7F)#gK^Zzp<_e-zA zCwSn=o2B#|)1NXu&eSgby75{yQej^FYO$KGhzCpY7q^|d(*AbiA=N4i-cjJkjZoqU z4jAKBuMSs~zoK*xa?3AOa!$DMWr&M}osiD^)s;&2wX@K#u#5TLwaj|ab=ak0w^R22HjU36hherO=e5|` zujS{C=Rx3=+CN{vexU8tt0Qv2N(J-SIikz2m@{9$)OP01*KwAY?}TRY`lHUwT|e&v z_f?qRDs-S8#)GHsF=wB)jLqGr&VwZ*nh|+H1A^ z+jJ<#-g!LTu?7QD+JLPjm?he<(4#|7Rt%>cQ;eGTPH*`I4YQIW6K(72Agem&)}PDk27hcQ%?{U4(+%R(DCYFI|Jnl~=!EhejWgb%je;XX5-%a}v4beuwgojV~FPo~X0F4G*6 z^x7&72Tcmh_2qJGT1O;J6VXMP5ehq2j3v4Qo9-%9B)5OqiuHk7S(^??4iVEtc0@(e z87mQqwskgHu|ehr)A>kWK8cWcGOi-T4aIUpDiYtHhCQ2FS-a%HL^hYqq+N`OvMk~V zq`53$Vc(o42VMI7v)n2x?hU8I0Y&hAEHqmTH zFoG(AEi;U5P}+F^U54%(IASKFf0sOZbRNbVJ4b_X(a2NL~B&Ik>2hsph;tmw;qJ$q(r$r&;?b9Th|oJlkg2!+7d`rNUlAJcEO>AIuR@=Ef4QHFe=Gkvz4F2f z{T+1c9QtzqImCe$k%Nd%!V7&9C{3BvFZU$*k1YR-WqpdC%;Q1mQWr&E?o$V;QAk5J zDZNEs=oyqa^-KOJS0MF>0nrowEHZ>i{o>z+KB4}3=u-Xb@Hms`uXTdRlPo1Cm9=M= z*zZ=Ze;*GVeP_sbmG;ZIM(bPJZfn}_Lv&am$#=l!%JmAr1er?uOZiHANd%cny9NFa DiBr^H literal 0 HcmV?d00001 diff --git a/ex6/ex6.c b/ex6/ex6.c index 17532d65f..c434b4b53 100644 --- a/ex6/ex6.c +++ b/ex6/ex6.c @@ -12,6 +12,7 @@ and `clock_gettime()` should work just fine. */ #include +#include #include #include @@ -20,7 +21,19 @@ and `clock_gettime()` should work just fine. int main() { - // Your code here + uint64_t diff; + struct timespec start, end; + int i; + + clock_gettime(CLOCK_MONOTONIC, &start); + for (int i = 0; i < number_iter; i++) + { + write(fileno(stdout), NULL, 0); + } + clock_gettime(CLOCK_MONOTONIC, &end); + + diff = BILLION * (end.tv_sec - start.tv_sec) + end.tv_nsec - start.tv_nsec; + printf("elapsed time = %llu nanoseconds\n", (long long unsigned int) diff); return 0; } From 9de2b204ace8ccf101f6aa2bf0a78cb83542a2ce Mon Sep 17 00:00:00 2001 From: AM_Myrick Date: Thu, 21 Feb 2019 18:03:36 -0500 Subject: [PATCH 9/9] completes stretch --- stretch/src/balance.txt | 1 + stretch/src/bankers | Bin 0 -> 13416 bytes stretch/src/bankers.c | 51 ++++++++++++++++++++++++++++++---------- 3 files changed, 40 insertions(+), 12 deletions(-) create mode 100644 stretch/src/balance.txt create mode 100644 stretch/src/bankers diff --git a/stretch/src/balance.txt b/stretch/src/balance.txt new file mode 100644 index 000000000..301160a93 --- /dev/null +++ b/stretch/src/balance.txt @@ -0,0 +1 @@ +8 \ No newline at end of file diff --git a/stretch/src/bankers b/stretch/src/bankers new file mode 100644 index 0000000000000000000000000000000000000000..2d0f3f724d4f0352136b7a7cefd650e128a70008 GIT binary patch literal 13416 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 literal 0 HcmV?d00001 diff --git a/stretch/src/bankers.c b/stretch/src/bankers.c index b44aed25c..83bc112ec 100644 --- a/stretch/src/bankers.c +++ b/stretch/src/bankers.c @@ -86,12 +86,7 @@ void read_balance(int fd, int *balance) */ int get_random_amount(void) { - // vvvvvvvvvvvvvvvvvv - // !!!! IMPLEMENT ME: - - // Return a random number between 0 and 999 inclusive using rand() - - // ^^^^^^^^^^^^^^^^^^ + return rand() % 1000; } /** @@ -116,16 +111,27 @@ int main(int argc, char **argv) // message to stderr, and exit with status 1: // // "usage: bankers numprocesses\n" + if (argc < 2) + { + fprintf(stderr, "usage: bankers numprocessess\n"); + exit(1); + } // Store the number of processes in this variable: // How many processes to fork at once - int num_processes = IMPLEMENT ME + int num_processes = strtol(argv[1], NULL, 10); // Make sure the number of processes the user specified is more than // 0 and print an error to stderr if not, then exit with status 2: // // "bankers: num processes must be greater than 0\n" + if (num_processes < 1) + { + fprintf(stderr, "bankers: num processes must be greater than 0\n"); + exit(2); + } + // ^^^^^^^^^^^^^^^^^^ // Start with $10K in the bank. Easy peasy. @@ -145,15 +151,36 @@ int main(int argc, char **argv) int amount = get_random_amount(); int balance; - // vvvvvvvvvvvvvvvvvvvvvvvvv // !!!! IMPLEMENT ME - + fd = open_balance_file(BALANCE_FILE); + int lock = flock(fd, LOCK_EX); + if (lock < 0) + { + fprintf(stderr, "lock failed\n"); + exit(1); + } // Open the balance file (feel free to call the helper // functions, above). - + + read_balance(fd, &balance); // Read the current balance - + if (balance > amount) + { + int new_balance = balance - amount; + write_balance(fd, new_balance); + printf("Withdrew $%d, new balance $%d\n", amount, new_balance); + } + else + { + printf("Only have $%d, can't withdraw $%d\n", balance, amount); + } + int unlock = flock(fd, LOCK_UN); + if (unlock < 0) { + fprintf(stderr, "unlock failed\n"); + exit(1); + } + // Try to withdraw money // // Sample messages to print: @@ -163,7 +190,7 @@ int main(int argc, char **argv) // Close the balance file //^^^^^^^^^^^^^^^^^^^^^^^^^^ - + close_balance_file(fd); // Child process exits exit(0); }