From 8c9f5fdf375953459302bc8d32e4e13de0169b0f Mon Sep 17 00:00:00 2001 From: kyranmccann Date: Wed, 20 Mar 2019 15:48:51 -0700 Subject: [PATCH 01/13] working on exercise 1 --- ex1/ex1.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ex1/ex1.c b/ex1/ex1.c index c4b111641..1b8980d67 100644 --- a/ex1/ex1.c +++ b/ex1/ex1.c @@ -9,6 +9,24 @@ int main(void) { // Your code here + int x = 100; + int child = fork(); + if (child < 0) + { + printf("Nope fork failed.\n"); + } + else if (child == 0) + { + printf("child start: %i \n", x); + x = 50; + printf("child end: %i \n", x) + } + else + { + printf("parent start: %i \n", x); + x = 60; + printf("parent end: %i \n", x) + } return 0; } From 0597c7c6b73ebf2f4d94dcb5f7fcd4e56ef9833c Mon Sep 17 00:00:00 2001 From: kyranmccann Date: Wed, 20 Mar 2019 17:03:34 -0700 Subject: [PATCH 02/13] finish exercise 1 --- ex1/ex1 | Bin 0 -> 8384 bytes ex1/ex1.c | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 ex1/ex1 diff --git a/ex1/ex1 b/ex1/ex1 new file mode 100644 index 0000000000000000000000000000000000000000..7664791f02cdfcfa59ff41bdfcf66de00e0865a9 GIT binary patch literal 8384 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 Date: Wed, 20 Mar 2019 17:03:44 -0700 Subject: [PATCH 03/13] finish exercise 2 --- ex2/ex2 | Bin 0 -> 8560 bytes ex2/ex2.c | 30 ++++++++++++++++++++++++++---- ex2/text.txt | 2 ++ 3 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 ex2/ex2 diff --git a/ex2/ex2 b/ex2/ex2 new file mode 100644 index 0000000000000000000000000000000000000000..ee9c8644f07878a24e9512f7e4b2345885c1071b GIT binary patch literal 8560 zcmeHMU2GKB6~5lJ!GOJ997r6XWlEs|iU-?(F$ol}{}@-cNx`J~gJJF6^{!a&y1TQ9 zjhfVw6T}Kk{SZ}Ft5i`dH6+Rd?L%W#YA_;ln>Ql0DOFR+Nt4#5iQ*`PP+Gh_=gv9f znelF@)T&RptC@4pcYf~woqNxIueGDiQ&c24dBryba&t>eq>%(QYbXPxQ8b8U@cxom zCs3_eVy3*&Bp@}@O>)h&lyEOlv}^E~fSax(J*Hekq$MQFN2*qsC{rO637{R;^>n#p zfhsa%QL4unQMN-C?Z(M&oa~s+QN@^Y`><{Jbdx_fZ2=i3rl^bQ!S{_2=6|twspKk6RnIwDKL@#e0@IcQ7E^>p3E>9sq)v-gq`*|TaL+VTV0|2Xx4 zrjkedZon$@;P(~4l>&H60sLve(Z-#yAM%xp(=;Eh7QjaVSKx7{T>xxwgTSwaC!c=- zAVF+)U>1L1@i$QWtJrcQ`~R4idcM5H&KOov6}$yCe;3tjIW4C;|sA{dXI zL>8UsX(O02^!{KhAr5r3H#O^ZYMr`E=nkr2uZ8*0X1;4f7v;|51D>l4LBIZjQ`JhxgQ}X;WMQG1X8lK!0ZRGXR z%a%rN*H#eaHf@7<#rj6bAs~s#&rVYqr*Uny%{2Ju3$+MG^uS6c3I(tF#%aO+> z&b}ad5Arw!vtyFKRSGhZ0q%rr>={kwa|>iAe}&0GY^C0B5-0R0XbC2bb*%^)60JJ z(n?;mGp*2Jmwt5*XupOg;OIV7Xh8)j{LReG+mI*xZOH$<1H9cZl|RN}K0^hl6ML($ zdHW0%ZlD5rd)f5%5#r|{FYEjU_e0>@frr|&e+V22z}Rm(RV;_L8tLIc_I7*rM#mQH zl~V1}ZSTx_boK0qhEn?{9*>Uft&Z%Cmh4A?+^V;=k;_HeodzDBq77vF+P*}q5Xjm~)86&F1 z(n>O8C`J@E*5#r%8jFX-;V2-P0i`n&hy8ZB7zn1q2?O@2wcZCBp!v86&i*Tx!1LmMtwED_ZJD9M58t;P30G zKq7yvXh#_3O+NqkJx#uUSrSkiM{eW}YzR#k|FVYu1@c-%oKA-S;1ouizO!=GJ zNQVl#j)>4QQ}14rSmz!*|6$@a#n(4J|H!pzlYcs&OQQZbEdu3_Jf2RxRPa1-;>*NU8hBP&#@jT<=73E?&FYdGAFHS!d)_Qm1elfrcz$WmDl~(+~2174b3O_Gko4_mX zvi1)f4En1C?;B2hHN-^}J0$a7aksV3?Lx1BRZaISCtfA|d2!y=7PN7F7K@K_3y7J+ z{m~#@7Q4sD%DM zPV{4`(ggL=gENr`ehPdyj~tFpr0&&p937rbb1_La<3U`gMq0CBkV4HHDITUp(0pjO!sInM&)y%%JE^ z_7B9vMmVJIuHRFiUkL+UF+G?{1&4IFPo;)LBo*ur>!D14{}7niI2|+%hiZ7R4r-+9 zZHEG#t$J%$iwtpEst~sI@_C_5*bee2tuNIt41EQmP0~6&~dOS(4ik}YdhT9 zt#=2SI$F`IjKcM%GqS>;8+XI_USp#pN*4|VjUdJOoFX#>=)@L<{M=&nX2$iPV$L9+ z9!e+mXfP4N0ATw;&BMv$0*~DP z7?I2yW^@KNogVN??nH!|9_lxOJwT0=Nu!*DsA)JgAk;+C2&;jn_G%;8M_gYbqxNLr z!d@K<2^G0$FdY?YXea^xOlm+(03}a^Q|VYT;b3%-rNZ$b8c=Q^ZU|NOm>&?}=Q0)?<1C?D6izJfEAHDpZoY{sfDYkikA>`>WK!OeaZ^%Xhc` z8M1F8J-#0@J#Vwe|9sr`=K#Y#q0gsvUT-7-zVwbn)w8fH2#Kw`JI z&b3qkm%|R&j`=yrAjakMxzA6AZhhBqh)=;5u^M>niS4)ALCCYco$}nXt2R>kgVb^O tox!s)*N68{oZnn`yZr=i7LfQmU~&uPGrtlt`RupRRdt>fiE_Oe{x{~1_k{oe literal 0 HcmV?d00001 diff --git a/ex2/ex2.c b/ex2/ex2.c index 4245375b9..cf1c6fc52 100644 --- a/ex2/ex2.c +++ b/ex2/ex2.c @@ -1,5 +1,5 @@ -// Write a program that opens the text.txt file (with the `fopen()` library call) located in this directory -// and then calls `fork()` to create a new process. Can both the child and parent access the file descriptor +// Write a program that opens the text.txt file (with the `fopen()` library call) located in this directory +// and then calls `fork()` to create a new process. Can both the child and parent access the file descriptor // returned by `fopen()`? What happens when they are written to the file concurrently? #include @@ -8,7 +8,29 @@ int main(void) { - // Your code here - + // Your code here + FILE *txt = fopen("./text.txt", "r"); + int child = fork(); + + if (child < 0) + { + printf("Nope. fork failed"); + exit(1); + } + else if (child == 0) + { + txt = fopen("text.txt", "a"); + fprintf(txt, "The truth is out there\n" ); + fclose(txt); + printf("child\n"); + } + else + { + txt = fopen("text.txt", "a"); + fprintf(txt, "Shut up Mulder\n"); + fclose(txt); + printf("parent\n"); + } + return 0; } diff --git a/ex2/text.txt b/ex2/text.txt index e69de29bb..a3a43af76 100644 --- a/ex2/text.txt +++ b/ex2/text.txt @@ -0,0 +1,2 @@ +The truth is out there +Shut up Mulder From 7ab04f322d66e15c499191a0532b43698b635e22 Mon Sep 17 00:00:00 2001 From: kyranmccann Date: Thu, 21 Mar 2019 14:13:28 -0700 Subject: [PATCH 04/13] finish exercise 3 --- ex3/ex3 | Bin 0 -> 8472 bytes ex3/ex3.c | 15 +++++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 ex3/ex3 diff --git a/ex3/ex3 b/ex3/ex3 new file mode 100644 index 0000000000000000000000000000000000000000..3c0f867afbf61e33506f3c8167d931c4fb13615d GIT binary patch literal 8472 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�}aSRGd)Fh=h+cSL|Bv$)U zUP>R}@2~^5V}2Sci1GJ1pYxNUQ{OQi#rt53SR*{v!uA`iAk^93N_p;CRa@x$8g(50 o&R}lK@$mkM^P6M0+Ml3}ugBq>zstIdE7<>rJ}|?IM4k5k27!r;Bme*a literal 0 HcmV?d00001 diff --git a/ex3/ex3.c b/ex3/ex3.c index 3a3698c1f..9d8c75f33 100644 --- a/ex3/ex3.c +++ b/ex3/ex3.c @@ -10,6 +10,21 @@ int main(void) { // Your code here + int child = fork(); + if (child < 0) + { + printf("Nope. Fork failed\n"); + exit(1); + } + else if (child == 0) + { + printf("Knock knock\n"); + } + else + { + waitpid(child, NULL, 0); + printf(" Who's there?\n"); + } return 0; } From 299bafa0362ed308689c66a7d573051b8e4e2e74 Mon Sep 17 00:00:00 2001 From: kyranmccann Date: Thu, 21 Mar 2019 14:19:28 -0700 Subject: [PATCH 05/13] finish exercise 4 --- ex4/ex4 | Bin 0 -> 8512 bytes ex4/ex4.c | 23 +++++++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 ex4/ex4 diff --git a/ex4/ex4 b/ex4/ex4 new file mode 100644 index 0000000000000000000000000000000000000000..6ae65311dc81cd1daa1b43422c620bb7da28257d GIT binary patch literal 8512 zcmeHMeQZwdx;KnzU@v)UY5_{!9PZ#?)0}sB8&qwRBxk=pf!X_nl)u zzc{6u_9r*8&pp5Malfz6J$a$6v)%1-2`(P-O@Z9lQVR*NU@cdK2#7|p9KOFI9u%my z1U>;0JLw#`X6hw94^XsgbX$OvK1g~@xrazANLG$SR#+%gAruLq9rks!O0qx|Sz&sT z`td`eY=R%9Cgd#Uta`oS_D51xB?$%xd(u9{!am}IF*6Nc`K){0=}V){<=l<1*}gWE=Pkf z2BRi?8GSL4%9&-qF2B4;yJ?Aeu3aboZW?STbRBhk9dZIS@}K$Wpgd%PQhf-1KMd z42yHYs^hxz{>-k8!bxz8y=VZ1&nus^v1Jy1md+*P#|ZcO6{)~D^OvhF9M254$K{F* zx8F0hAK_owc&Jy zNPNnMFWoAtBPa%&}Ju_Oc?;izTmb#BSa_=40 za#ywC4`=svcaBu70N>h3)sLY`ZKUaMpp{>}27LUxdVQ;eb^+6)ja1YD)ppHkxohSF zFvRO#U}1<=NAg$t)#~*xN&iPCaa2VfT;4>*ksbd6(xYve2Yc=OyhqE;YUih))La*} z_vXzSaQHSktVD;4`8(P42B?YbR&BWH2UzRD{#0tGn_dBKx(bFot-;sDiWh-*VRueq z$3C3|moOewKQhw~8d!tX@=sry&*yV(bHm@86GLmDzj#+phXH&CS7G`UsG%(T^t6te z7eVC~2*%Ov^kIO0gEehrwOdZ%j(N#7eGbIZc?QkeZk=wsC5>kag7qNyMvaA~qQf5E4N2Rm|q3ibqHtv0C@aw%$&9th@ccjRt#ZoyG_wez<<(=UJr?d6Y6 zrS5&6zs}s}ow*yWxqk-ptNx-5Pr9^SA7roNo;-9UcsO_@cr>U_juzYd6t=4LN4wSq zr>ZNNGE}7Zfp!Bu1ygeY=p(RF9|C<^Hf<0Om^vG85M z&p3{k@Ls^e^3Ue;N#xJc;pG_UG6f|Z`;3#EW1BHFg2J&yjm3)9M46BqF-q|W-x2(S z&-Wk4H20HXiaNshxh0l>`#nK=%ZYOPUnQRP{*$-H2lFW*xTfTIN68;t+mh$`o+W;e zc#s|eF@QC{g?<*S&`l|%r7p3@W$crd;NY*`K zP2qgog&qN?ncicic#ZIv#rZZXYU8?L$7sD*;!euhOqki7(s_s`OK; zi(Ft4yc=*o>?`N~sg(K)&j{3I8_&yauTzWpiS%EE4nHvzxbeZS!QlvRF>IP{dy zDgB&?i-6<2?W1{TVKZzyOLD^s%Fh4*CFB7Q_)+RT{Q{(iMj6mw3x z8Q1$T>y&|vQ#h#)#FD+Cm>xEh>5LxA4vM~HJQXucBdqRh*ws*83G-c1J(Ny|hIDx6 zrH4d+Iutkba5f$v0uvjjgQi)cY7B0N9_f1f{@|WAy{)TNhiq4=T3G0<-|h1ZjH z$g~G@y*t?4*@j+aGOjO^l^y=V^c&{)0s(un z&dT$ZV!9CynIX#kIYiFPpHqyMR(cOQR+{V6!avjtiM8AhQ>~ zHyNvgirt>$N2VKDk*L$Y74RDn({uYAXENpfbGYXWv%0_@-#lzTP8FsKP7V~juCdDY z{60Ad7``Rgp5s=gV<58^a#w(kLJi+6Y|rs6Q*MX*&w5Os1$%r0G0$-@Q-xY`_Mc#J z0xCGCY|rsB(+N`K_MPK@iR_z6kK<~l{4PX${2z|f{tRF^C-ieztPsHOM^KT)x&Apo z?e-j}GnKhEvPI&jI@8yHx7%|(&y@R1W`+JU{xgUD81zn8=l3|rvHbr` zr#|yc{{XhtHhX^OoTbDH>w$_a%rpHfptxk*KEH?f|Hb@&Vcwr?$NLB012{ys=e)=$ zb_$Af|FJ#O>!4$|FT|EI2JA<(<_lNH_+~3@HyZsnm7Eq2koO8RD6l3!8_JW?C_|Fl0aoYbE D^98Yj literal 0 HcmV?d00001 diff --git a/ex4/ex4.c b/ex4/ex4.c index 0221ca96e..b7a1308eb 100644 --- a/ex4/ex4.c +++ b/ex4/ex4.c @@ -1,6 +1,6 @@ // Write a program that calls `fork()` and then calls some form of `exec()` -// to run the program `/bin/ls`. Try a few variants of `exec()`, such as -// `execl()`, `execle()`, `execv()`, and others. Why do you think there +// to run the program `/bin/ls`. Try a few variants of `exec()`, such as +// `execl()`, `execle()`, `execv()`, and others. Why do you think there // are so many variants of the same basic call? #include @@ -10,7 +10,22 @@ int main(void) { - // Your code here - + // Your code here + int rc = fork(); + if (rc < 0) + { + printf("Nope. Fork failed\n"); + exit(1); + } + else if (rc == 0) + { + printf("hey that worked! (pid: %d)\n", getpid()); + int run_it = execl("/bin/ls", "ls", "-1", NULL); + printf("run_it %d \n", run_it); + } + else + { + printf("parent\n"); + } return 0; } From 5c8748851c10468dc828595d90190bb766a5f8c7 Mon Sep 17 00:00:00 2001 From: kyranmccann Date: Thu, 21 Mar 2019 14:29:54 -0700 Subject: [PATCH 06/13] finish exercise 5 --- ex5/ex5 | Bin 0 -> 8784 bytes ex5/ex5.c | 36 ++++++++++++++++++++++++++++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 ex5/ex5 diff --git a/ex5/ex5 b/ex5/ex5 new file mode 100644 index 0000000000000000000000000000000000000000..e853b1ed9711c65e645acd31787c5659f6be40ba GIT binary patch literal 8784 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 P*$35w;uTg@)NB7QSBX0D literal 0 HcmV?d00001 diff --git a/ex5/ex5.c b/ex5/ex5.c index cbf3b8e61..dab50b972 100644 --- a/ex5/ex5.c +++ b/ex5/ex5.c @@ -1,7 +1,7 @@ // Write a program that forks a child and creates a shared pipe -// between the parent and child processes. Have the child write -// the three messages to the parent and have the parent print out -// the messages. +// between the parent and child processes. Have the child write +// the three messages to the parent and have the parent print out +// the messages. #include #include @@ -17,6 +17,34 @@ char* msg3 = "hello world #3"; int main(void) { // Your code here - + char buf[MSGSIZE]; + int p[2]; + if (pipe(p) < 0) + { + fprintf(stderr, "Nope. Pipe failed\n"); + exit(1); + } + int rc = fork(); + + if (rc < 0) + { + printf("Nope. Fork failed\n"); + exit(1); + } + else if (rc == 0) + { + for (int i = 0; i < 3; i++) + { + read(p[0], buf, MSGSIZE); + printf("%s \n", buf); + } + } + else + { + printf("parent\n"); + write(p[1], msg1, MSGSIZE); + write(p[1], msg2, MSGSIZE); + write(p[1], msg3, MSGSIZE); + } return 0; } From 80f2cd93338e90406e7aade42ba5dfca3caccc0c Mon Sep 17 00:00:00 2001 From: kyranmccann Date: Thu, 21 Mar 2019 15:04:08 -0700 Subject: [PATCH 07/13] fix exercise 5, completely misunderstood it the first time --- ex5/ex5 | Bin 8784 -> 8824 bytes ex5/ex5.c | 25 ++++++++++++++++--------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/ex5/ex5 b/ex5/ex5 index e853b1ed9711c65e645acd31787c5659f6be40ba..b1371c4e820b44f3ab0ac62b84f4c53e4c4d6ea8 100644 GIT binary patch delta 2656 zcmZ`*eQZ-z6uzA(4-O8bzXJ6JrR8u)zQ!q60CYk~j#MRxx2{2nI$y_x8PI!FZE`^23K%VfT#}X^F)Yb31y!_0a>z^N+{nw(D z5A;l6hrNPivg54uPFEIOpjos7uIVJO>)mt?j0h5ajE@Q%;kMwWMV!CP#{*p3t8>#J z=e?YVbZ!V`>FH#Q=KvYKvmj4DRcNe+CHg5+T}|~`Qs1z)rml{xYpe@5)Q~lsw$?+Z zeqU8GX-WjbD#r3+Ei)X(is;BzoHN_D31KrqO*3<1)2gWM2&qCZYfWnXG`nnuHba5G zTrH&AE_0dYUZ&dRN9?QNnxWpG#uC(8{9a_G)+i(<e&m2N{6Q7OHr zL~k~DusHefs_6;SQfBNfS_r#MvM^$VuT8o6IcOu>d`f%S86(ar*$S)DRdxWBjgpSC6t2rbNGso{4=m+QL04 z|MBciF1c%Xbjfz+=q{^faW~-nkILg1j>N9w9D`%fwxnVqQ_N=ytI|DhSV2z-*IZG$ zmkeu3IMH0k7IgHt{Dg6{*eVg8wYX=w(R}vgI=&IX7lJD)qL+h}LEN?6eFEQ;X$+SI zqoWnkyNmN~@?$$Ns*Ak~?^q75S+gO$X|2regYcI1B+1rp-BLp$)pa#n8dQ+Ei4Zzb z_e=>shY|bL`-#MM#J3+L5}zXOL0pdb5hgT<_y7xh191~Hr%t5-IFRZygm6tS{FpkW z^a{?j8vsQl3;Rphf5s>wd^!?Lv%e|KwHbAbs5Qkz%F*;1c02g33-l!z8+O2(sSTX^NA7l8eqqU zwcAje<`s9b8emg{k|sEi_B_Q48`n(+F?~G*GBRP9>fvDebdO7Y*2h(xsp5RNkp7&g zU5(mRxEgZo-(wCVb_rwUh)$h}D2Nhf$C!oef~Ckh;SFR~vL8{RA?QPvMye1cS_oo> zQ)edujv^W4h%XHcI2;BYagYcEQIUz62Qwth)}?cytu~|4(=&c&@EOyv3pfq|bw~o< z=Mx+S9_^ZEMPO|+b|$KVYKKH4(CkwO2YJ1*qFJ3o`Qi)9~^PH!Q_;M!c@q2&Ze!f)G5)OeEg7)C!xvV3MmwJMM|so314vL*;mDjqx3+Tp$peUp4!1_AgB<-$m%l_F1$S4)^W%?3tpr4;r?C-|I7L=U@=R-eL>UUS2C4^3F7Ce>ox$ z_ZGvjcRGY*yIDI}tq_)r$6nWn`myeTJ~=^U=*z*Um68=1fDvS+6O!y9)K2vN3#OBc A(EtDd delta 2513 zcmZ`*eQZ-z6u^)YQB8u`v#bGWhp8%c; zd|a`LD^_u+q}%vtPS$1t;d8nz_6O4A8Ro?IS!x;6`{V=T&pibkZQJCWdDAsyunLK-lvM`&`E%JCwwj4(3TA80@ zoW20OR)Bk)mp%s(Z4vC$ir)5)wq0GVq@$&IJL&A&-qO)QTK9Ccb-^dvk5&*u35T5! zNA?4WyR8i~pdoK4vhF2qCW1EI1P<%+oqbALlmj4BM)+8_viycQyWHy#<%z0(pvc81 z(C;p7Ve^S7Nx_BqSUFqjG{Xv@B&Yf{$ z6yLF|VMNCf)4gbOmI=}=I7|28kf<4t?Heb1bJ6BKW^-p=wTYmb>AKfmtV!V_a_8y( znh7bnVd@O4Y$@?$;$qr@MpCk7s#i*kqKob5;wxsG9!Ed1niP%gOL1?1e`hl)YnlId zQ7-jcJs4wu&9z0IVp)auKZ+e$#RJ`wE9y}pZzlCOzzMVU83_fK&bP`bk8F-?TA%ni z(h$M(Db#D^>_5furAT6aed71plACg2o}1UC&%&?f&(;=pie}Q@+|jbD3%`Ia)jYcz zQICDa<4ooN;tz-?5w9U`M7)I?UO@EYN!&nu7yisCqJ0pwgmgoXGMOQ0uq>vV6ST(JpjDZ1>-J1=6KE}_|%t9wI7uyF5E8Y7JTZ9r)p<$LJ13| z-Ysw`Gwg70!UH=2 z?jq+GB}S`k^ceVD!9?+}oy10(pggz8cNuLNQ=k9kiY*Vja|K_XVq2<|n_R7EQGj9L zqv-Zh3C3~--A1&NBhc-_Spkd1mm{yuA!=%!RmVS7;SvWxT*_RYk diff --git a/ex5/ex5.c b/ex5/ex5.c index dab50b972..c4f26953b 100644 --- a/ex5/ex5.c +++ b/ex5/ex5.c @@ -29,22 +29,29 @@ int main(void) if (rc < 0) { printf("Nope. Fork failed\n"); - exit(1); + exit(2); } else if (rc == 0) { - for (int i = 0; i < 3; i++) - { - read(p[0], buf, MSGSIZE); - printf("%s \n", buf); - } + printf("child writing\n"); + + write(p[1], msg1, MSGSIZE); + write(p[1], msg2, MSGSIZE); + write(p[1], msg3, MSGSIZE); + + printf("child done\n"); } else { + wait(NULL); + close(p[1]); printf("parent\n"); - write(p[1], msg1, MSGSIZE); - write(p[1], msg2, MSGSIZE); - write(p[1], msg3, MSGSIZE); + + while (read(p[0], buf, MSGSIZE) > 0) + { + printf("%s\n", buf); + } + printf("parent done\n"); } return 0; } From d8aa3e8b667c800a400be8f0a1e818d66daa35ff Mon Sep 17 00:00:00 2001 From: kyranmccann Date: Thu, 21 Mar 2019 15:19:54 -0700 Subject: [PATCH 08/13] finish exercise 6 --- ex6/ex6 | Bin 0 -> 8536 bytes ex6/ex6.c | 32 +++++++++++++++++++++++++------- 2 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 ex6/ex6 diff --git a/ex6/ex6 b/ex6/ex6 new file mode 100644 index 0000000000000000000000000000000000000000..b6a5aa2ce31b5a47446e75a9878bfcb14963a08e GIT binary patch literal 8536 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 A!2kdN literal 0 HcmV?d00001 diff --git a/ex6/ex6.c b/ex6/ex6.c index 17532d65f..1ec1df66b 100644 --- a/ex6/ex6.c +++ b/ex6/ex6.c @@ -1,14 +1,14 @@ /* Write a program that will find the average time it takes for your computer -to make a system call an empty write to stdout. Your program should use the -`clock_gettime` procedure to time how long a single system call takes. It'll -do this for one million iterations, and then find the average of all of those +to make a system call an empty write to stdout. Your program should use the +`clock_gettime` procedure to time how long a single system call takes. It'll +do this for one million iterations, and then find the average of all of those iterations in nanoseconds. For some helpful documentation and examples of using time-related system calls, visit this site: https://www.cs.rutgers.edu/~pxk/416/notes/c-tutorials/gettime.html -While the linked site does say that `clock_gettime()` does not work on OSX, this -turns out to only be the case for OSX versions < 10.12. Anything later than that -and `clock_gettime()` should work just fine. +While the linked site does say that `clock_gettime()` does not work on OSX, this +turns out to only be the case for OSX versions < 10.12. Anything later than that +and `clock_gettime()` should work just fine. */ #include @@ -21,6 +21,24 @@ and `clock_gettime()` should work just fine. int main() { // Your code here - + + long sum = 0; + long time; + double avg; + struct timespec start, end; + + for (int i = 0; i < number_iter; i++) + { + clock_gettime(CLOCK_MONOTONIC, &start); + write(fileno(stdout), NULL, 0); + clock_gettime(CLOCK_MONOTONIC, &end); + + time = BILLION * (end.tv_sec - start.tv_sec) + (end.tv_nsec - start.tv_nsec); + sum += time; + } + + avg = sum / (float) number_iter; + printf("Average is %f ns \n", avg); + return 0; } From 7a6273915feb47630b5a7eb8cb9db31b8c8ef50d Mon Sep 17 00:00:00 2001 From: kyranmccann Date: Thu, 21 Mar 2019 15:22:01 -0700 Subject: [PATCH 09/13] fix exercise 4 to wait --- ex4/ex4 | Bin 8512 -> 8552 bytes ex4/ex4.c | 1 + 2 files changed, 1 insertion(+) diff --git a/ex4/ex4 b/ex4/ex4 index 6ae65311dc81cd1daa1b43422c620bb7da28257d..d7cc4a7ae55041731a1ed5d0ece33c4422f3d425 100644 GIT binary patch delta 1799 zcmZ`)Z)jUp6u_x6}`A6_r$&ByPfjA{(@e=ic0x6~X&>_nhDF zo_o%@_n!OST1TNH6LjZm2yg8bL7Feczep`OD#(jTzb`aeeAU#yt%7i+IE_aUnl*4&8Tm$ z!nD*%2Vg_eVNDLwCZMuTpW=N7@89QR12{IpwTv8uf)up2U>&&xu8ZlXTx5G^Hv?M zT5FxlyI321h3wDBez%Ktz%N$)LM@+L>5Q>^c4NXir$mYI@!F77&KYAj?KepI;Il}T zn~q?wM%qzh_zgCxm@i{%I>0bHxnhpveGId871uc4%dpJwBFABdEr^?oSx$HuVPysx zjvWlMGANE#901g`H2r9glE2kRCn3gU+d~9>#-z1`(m4FUNZ%O>VfI(xZcVd&g^`m7 zuR)zHO3%O%+mrFrNRhJ%W325M)B4ziT4SQ^1w;iWMkyHBty@ztVQY)`J}Q@2*@_D1 zP#Zh{fSf&1IF4$19b<3fz%st1&hVJya-Rz6ZU>=;v_Rn*h5{Q@-Uqi&Mf` z=J(8;waFEhU(Bb6&22YFB`ie`=0X&B$#+q*DDa!_Vn`E*$ZisA>%uAnX@3HDV8x$M z{t(&EL&^UZbOwCZPCQHgQG#~@cDGp=6%T|AKq{awWdjE!{;^uR89Yaq+QU&wTVb#+ z;Wp39lyfkP?375slwsJaODKziU4&45QppLFgZ}ztwS>$wU4Ys8gkomX3Y%!tBTB`T zqY!IIC^^BRpN6Dj{#^1f(~xwSWsMv3Q^O&Lxj~u&;l@MCG4pg{zVGGedajzc1U^wzG70I0< delta 1794 zcmZ`)Urbw77(eIUmiBh^&uuBU-3qtW;YL(ST}H z8f?(H4k35>9wde(ckw~-3B(6|P{9!*QIjq{SfeJmgrukst5L&}V*Sp&_jJs})AW4b z@B4SY?>pbgE%z<<=@HpzAm-||2q9P6-_M-!Scp?X;--M&&g^xs36aK4hSS#tOMVGt zs>p_IW!P2*bkkvZw`AGWDa_L0#Q#Oi*%5QlE(|qoo@iJT-v06Exv##=KeS%zO?`aJ z3)8{@Is`Wa1wIfXP!c0_4^UB|J?4JF)MQb5(d2aGI$%jupe#h-me>qC98+F_SU-Z4 zz^p?}9k#Npm*}>!;j)-%yC^Qt!fnR{^}to90yEA=@0>qw8ZvVczD4ObC|%qpb-@-& ztIo!;;x_3HE4;aD+@jtI4)Hook>Ubm?2e;HM^wh`R@YA4DA=SD!wZi&H6tn&n?sx5V-*%&La{nJN$QD-c>?$fg z!9OXVgp~WGp=maYNp%j_0t`G^$iw*WR7Q!4HUl5 z3}%iVnr!QEnpHi>=+l|P)d2@*b) z8j$fNW!;_=`%R!--lxhrc0IW4!6b7q?>kI&pnjE(Lc;$7ddtBOtWig>%YN;T+Vofh zyz6g$ujHrE5}ShmED?i_LM5PJxJn=_N*FvLD^Y&rc5{*7=)zO7LgToHMK4Pak-^YD zf4#`NeFCIt7k{^0CcEJm^v=RO#tLC9IjCSuf%r&( z_rq2sY@9BG;omfdi(X)4OAcGzYsw$+nR2q&>;pN5mthjs-sPzk>X zBh4|H4-Sw0#KN`a0b!vUIY$>x@4Sa%>kGS*GQUbr4Y-E)|I@CRJZhiEX#}KLQqpay z4w+aQ4#Wa*Db`t^D}LEJtfFl_1)wcyIc_(f(;Vc*5S(m@NxH4UA!tcUhK&qZYDs(e zykjqf)-Dh4MbQm?tzFWc4@15+EoCLE*eooyVs2_D>{SCWihoV*l>Yh9k5Z#|)Zz94V2e1Tu*|{{p(-gwFr~ diff --git a/ex4/ex4.c b/ex4/ex4.c index b7a1308eb..6063add67 100644 --- a/ex4/ex4.c +++ b/ex4/ex4.c @@ -25,6 +25,7 @@ int main(void) } else { + wait(NULL); printf("parent\n"); } return 0; From 6e92ffdd7eb100a36148f91e215a510e86087fc8 Mon Sep 17 00:00:00 2001 From: kyranmccann Date: Thu, 21 Mar 2019 15:23:51 -0700 Subject: [PATCH 10/13] fix exercise 4 --- ex4/ex4 | Bin 8552 -> 8560 bytes ex4/ex4.c | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/ex4/ex4 b/ex4/ex4 index d7cc4a7ae55041731a1ed5d0ece33c4422f3d425..f1ee99595358fe396c5f1c527b1358e291a1fe0d 100644 GIT binary patch delta 1488 zcmYL}e@q*76u`gVyLRp2`U_gxGD_P8B&eeu5j&TV^gzNjY1|e;G*0OhCe)Sggm#89))Gj4YRxlR(KC>1%3_5QK(#EmCONH7IBW2F z2ld-IWeKR3S?4mW8QgRp?ifx|0bVtpre@eOcBeiT0z`UuA;~G%r1TZ@Wj&n`rSl;S zDJ_qnwE3fGF&<&@^;HE|%WlS$@imnj7_(m17gVlg%rl->xrVWU@uwj(o<&bWqJdVEvL+)R3D)-;Rn;cln*|gwcpVIEZ4fdiE2lB;UH>`Sn-xapi$FMuehHMG%ozbXtK)r0QhzP(rFc#3)c- zL`dk5Gy$S70!5!4PWi&y$8Gi4?SQMkkkBk>S8N8_6cNHYg+WBRf9y^oE$Fd@LaC{b PqvIe1BXkdl!Pfr)GG(M_ delta 1462 zcmYL}U2Gdg5P)~@?AT{;d`@yc+a$GJ$pO`92y1%FFaIO^#^txHkU*@1}E5;zQ8n+;lgr z@bYK88`gPO|Lp6@G)ZOBM@i!SnIq(_H`A%)6iLk_-%BSTXqtVJaK=SYvs=F?VHY8y zUM|UalUO-N#-VPKJq?TQF53N?VKt)4K+Q*~6*A^iQ~-0=NcObgC(0+6(wtgTaz9!x z6LsiWbg98TC>_4NXfb}9C1^EN9Kl_T*|S?UjdwC;wY4s3yqz)6xT3L_v59e6;~vIl z#zi%Yo}i66*v_<0XaOuiqKK@Gr~ZoN>#r&K-;~_%>+$iig4u=-Qwny#8kEBDEsRp7 zpRIoKkHfc5bKOOlPzvTYYUPZER8U+oN8!39lC@(c&G9W&U1n`* z9z!el;T@7W)I5M@{t8yPffE<;Ce1N)Eip?eNSyWxLt7dR|A$JCQP{Hm8*}?Nw8gD^ z6AqmC)3uCDn!C})%-6^sgsYpXs;ynU96c0$IhMZ~orq$yg11asFCJ(5rD%RLmj8Eb z@TQWxZBRNt@#d8lxHp>rI|P_p}+5#uAYvv3?HSg~j6X^3_o zb{5&Wz+s$UQiJo|2WSPT!$;>K;K*``F8I>%boH9UP0`a9Wt?q`5-(tEz$tq=8T355 zO*6`V&BQA)g%Ou-sbnGtmN{DA&?kL-zeN-`1$P;;c4 z;3w5PikV`)hv`?a*gH$7AkY`01P=C{q9#~FDZ;cQ(<0=h5JoOZA>j`r+Zkv}KF?h| z22M^UqUblW>&gsKmrQ-IfO3~6_rbL5eg`|jlhp;+7KQKJFPPZ>q}p~Lqt%pml44iu z4~2wz_VwYI2cbVKR1B&>45?;N4f05x?iFDbsk2iN5C+0R+}O7`#E@zR;ktn^oEQ-4 ycBl`81e2gY%LKx Date: Thu, 21 Mar 2019 15:24:27 -0700 Subject: [PATCH 11/13] fix exercise 5 --- ex5/ex5.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ex5/ex5.c b/ex5/ex5.c index c4f26953b..4ecf2b955 100644 --- a/ex5/ex5.c +++ b/ex5/ex5.c @@ -43,7 +43,7 @@ int main(void) } else { - wait(NULL); + waitpid(rc, NULL, 0);; close(p[1]); printf("parent\n"); From 8b139d0a0d76e632773b4195dcdb8affe6fd53cc Mon Sep 17 00:00:00 2001 From: kyranmccann Date: Thu, 21 Mar 2019 15:31:38 -0700 Subject: [PATCH 12/13] fix exercise 2? --- ex2/ex2 | Bin 8560 -> 8600 bytes ex2/ex2.c | 22 ++++++++++++++-------- ex2/text.txt | 2 +- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/ex2/ex2 b/ex2/ex2 index ee9c8644f07878a24e9512f7e4b2345885c1071b..7884e3752dbffab0718796596df563f195c39bb1 100644 GIT binary patch delta 1885 zcmZ8iZ){Ul6u-BxTi@&G_TIX#9qYQc>0p?+mLV$$bJPjGDIp_qx)^Z->B6$<#wY<2 zbxRhIQYvkZMl?Z3vP3bF4E90Xhq(zs#;46MPW<2`Xj(CG5TZzwdd~a9g15Q%cYo*J z^XJ}s-s$4gC!13~CFEdw+hhQ1Pp|q^YArBWYx;*U{|prVPO<1TL`w*t^K0vDtz9J_ zUAotM+?GBy_-@nnFTYZfHr(mL&avl{7EKrHIt5 z0`W1OUnOoQKBDt)kO%fqDA|-Qn4k@Gso5dZ0Nlv0uQ`I^J4KbxFs3CN&md{jl6j{Q zwe@$k_%E?CEs^&!Y;e?y-6Tw|-32`kl~=)W$BI>}QN;EKwc*CU95`zug=Jcz@gA~_ z3*BTi94_Zc@S|hJpo-c(cqDYxg^)?y&*ilE=1k^1PU4$y48L`Q9eND?okw*oK0Tpe zw3BoPsL@0khj8Q9B*=8&jP~zu#&Fl72o2rU64>M4W~z0=m$gJ&#t_YE@!OMwx+PqG zf|iqwKC(FfZ!UK;f;MEs#v&>#l8v8mL5o{9P^8?&Dj)A-x_r!0Ljr=)qWB>|l&->+6r!sa<^o zJ!;p^?%wEbI3+ba#mj{a8_^a$+R1-%xub|abTEcki`b4>k7v0;oGu&jBw~o7WKig= z=2u{~Gss2Q>0G(K6HSP;Vm3eGE7*6TsXHW#6v{_z&8~dgAIluL5mSP_iG3YRJD;_8 zq9fQTyT{dn)i%lc5Edcrs#Jz3LTvQuQX7S7S4Wjh*@(?tWK;TQ%$QjY*jb1ac2vz% ziefX131cR=BAtin!X~}|yr_~-LRHZqOcnW-|7sfj)5LsJz0?6pK?8{L1wIASvX{$n zOZEs3Hi_s(GsxCR51bgTjZwhBtY99N7qB7Nu6X$fj-E9xrap*uX`jFfnN<*%q>Kry z2(RNDYLDUQDOZ?P1|Qy4%ry90Il)!fTkL_4i|Zj%EW<*vsEqv2TNOmyUXa})uZ1#q z&=wNmIrpo4E1Yp3u!&BnE~%qPOHS}n_!-AB*z3W{g@>jVHGol)%2*adaN6Uwg&Z*9 zsgs^GFZ~YO@_fRFAYHmriQ%g~R6obhmG0vCMgbi!^SNnG<#Rkxwv9vo@&*1VY%dQg z)^l6f3Tc#DNnznxm_zBLnJO0gLGcHr1yi~JE&i}#C5DCbkj6dMi_OD~KP*{^I0RBf zSQ;^tV+2|%!cObeR0kZZXmDDOg-5?y(IAbQ_cIDoAgqj;%))lq9tb+Em%~dw7HE(( zGm*9NnZN;FVO4)wHm=wNgWw;M8~W8wo`N|wEX|f0;-jEcg{Af~gWZSp^2+}JBpTc7 delta 1731 zcmZ8iZA_b06u!6LZ)xfKwv-kqr6mKzU^_5SaFVqSZn=!u{Zczth zv~J*aKI`zv;E_a(#10%DdUF6ebSEIKbHQz$w{f4`1vzE)NtQ|BIiqaM{?ESv_4&v@X9@RMf>i59_JXW-m-)}2Ej9h)Ra@0b z^pMC)k$uli{T%6u?A<+6GilOEhx^1Nba8LgkB~qxF)*44Bt{ct&(QEdz!w`DIpmA= z4IUooCw)W>!cSbw4nixmJ6chbUEt}z3WfI&Em-keL=WO##9G|wHOBGGe?>fv*g)Y~ zb2VLtL35B2_{3aCdm(Lh`Cq|BtZx!2<|j3~tOm{R7Ndy}d{a4WzCL74 zCv&VWjb%s|@1!Z9wknzgziqtyEk$rr!H*RD+5l&5Ug#Ap*y1)Y@hM!E=3QlKBZ{H~ zS}d4^JnzDsJnz(UWKBXddi{b^TSUUpEx2eDXQ$RmG7=V(oP;*q;`bOG#@VSA$f|^P z!o#}Ygkt;Kl!v(837^}Ws1I)0U1d>qe@YX6L=7n>3qTz%%r0{TH8~?Z?|6-tz`5yo^ZX+=;tUPG&$+V$X~xZsLY>PM0QUfJ@E*_fRQ!7xK<8Xc*>7 z>y}nZU!?~5hi$3R?VwA&Wnl^#s>5GB9ei4Thk9VFA}FZ$q+%;vM6Y^?D$c_>y8|p9 zkC0SuOvQ3&^8~q+;!Q!^6B5*0RdE?EVvc(EcoCiur@o>vG**VVsB)`Oh*yTp8HHsG zuvpn*R{t|_w|`c)aQ&Qo7X8rZ4GF^vQ}Fq@ECFr)5N&|CzwTcTXxfPY diff --git a/ex2/ex2.c b/ex2/ex2.c index cf1c6fc52..62f008f81 100644 --- a/ex2/ex2.c +++ b/ex2/ex2.c @@ -5,32 +5,38 @@ #include #include #include +#include int main(void) { // Your code here - FILE *txt = fopen("./text.txt", "r"); + FILE *txt = fopen("./text.txt", "w"); int child = fork(); if (child < 0) { - printf("Nope. fork failed"); + fprintf(stderr, "Nope. fork failed"); exit(1); } else if (child == 0) { - txt = fopen("text.txt", "a"); - fprintf(txt, "The truth is out there\n" ); - fclose(txt); + char *str1 = "The truth is out there\n"; + fwrite(str1, sizeof(char), strlen(str1), txt); + // txt = fopen("text.txt", "a"); + // fprintf(txt, "The truth is out there\n" ); + // fclose(txt); printf("child\n"); } else { - txt = fopen("text.txt", "a"); - fprintf(txt, "Shut up Mulder\n"); - fclose(txt); + // txt = fopen("text.txt", "a"); + // fprintf(txt, "Shut up Mulder\n"); + // fclose(txt); + char *str2 = "Shut up Mulder\n"; + fwrite(str2, sizeof(char), strlen(str2), txt); printf("parent\n"); } + fclose(txt); return 0; } diff --git a/ex2/text.txt b/ex2/text.txt index a3a43af76..3277e1244 100644 --- a/ex2/text.txt +++ b/ex2/text.txt @@ -1,2 +1,2 @@ -The truth is out there Shut up Mulder +The truth is out there From c0d3852c95e269393ba534cb316f543a6d53c77d Mon Sep 17 00:00:00 2001 From: kyranmccann Date: Thu, 21 Mar 2019 15:32:59 -0700 Subject: [PATCH 13/13] fix exercise 1 --- ex1/ex1.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ex1/ex1.c b/ex1/ex1.c index 97b2dc097..a51303c9a 100644 --- a/ex1/ex1.c +++ b/ex1/ex1.c @@ -13,7 +13,8 @@ int main(void) int child = fork(); if (child < 0) { - printf("Nope fork failed.\n"); + fprintf(stderr, "Nope fork failed.\n"); + exit(1); } else if (child == 0) {