From 362e141a4574b1c788305224d06abe71b9492ce5 Mon Sep 17 00:00:00 2001 From: luiscmartinez Date: Wed, 20 Feb 2019 12:17:45 -0800 Subject: [PATCH 1/6] initial commit --- .vscode/settings.json | 7 +++++++ ex1/ex1.c | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..a4c54f93d --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "workbench.colorCustomizations": { + "activityBar.background": "#561905", + "titleBar.activeBackground": "#782207", + "titleBar.activeForeground": "#FFFBF9" + } +} \ No newline at end of file diff --git a/ex1/ex1.c b/ex1/ex1.c index c4b111641..a82e43b5c 100644 --- a/ex1/ex1.c +++ b/ex1/ex1.c @@ -8,7 +8,7 @@ int main(void) { - // Your code here + // Your code here - return 0; + return 0; } From e04e66095a1191cd622122b7d22162c977dddee7 Mon Sep 17 00:00:00 2001 From: luiscmartinez Date: Wed, 20 Feb 2019 13:13:21 -0800 Subject: [PATCH 2/6] completed ex1 & ex2 --- ex1/ex1.c | 18 ++++++++++++++++++ ex2/ex2 | Bin 0 -> 8704 bytes ex2/ex2.c | 34 +++++++++++++++++++++++++++++----- ex2/text.txt | 4 ++++ 4 files changed, 51 insertions(+), 5 deletions(-) create mode 100755 ex2/ex2 diff --git a/ex1/ex1.c b/ex1/ex1.c index a82e43b5c..54ddd2700 100644 --- a/ex1/ex1.c +++ b/ex1/ex1.c @@ -9,6 +9,24 @@ int main(void) { // Your code here + int x = 800; + printf("Initial value %d\n", x); + + pid_t pid = fork(); + + if (pid < 0) + { + exit(1); + } + if (pid == 0) + { + printf("value of x child process, (x:%d) (pid:%d)\n", x, getpid()); + } + else + { + x = 100; + printf("value of x parent process %d\n", x); + } return 0; } 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..6ccc84fb7 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,31 @@ int main(void) { - // Your code here - - return 0; + // 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..a5345f70d 100644 --- a/ex2/text.txt +++ b/ex2/text.txt @@ -0,0 +1,4 @@ +File write before fork 53417 +Parent-File write 53417 +File write before fork 53417 +Child-File write 53418 From bbc372677e3be5cc3f85768b2c4b56449ac6db2d Mon Sep 17 00:00:00 2001 From: luiscmartinez Date: Wed, 20 Feb 2019 14:40:07 -0800 Subject: [PATCH 3/6] completed ex3 --- ex3/ex3 | Bin 0 -> 8616 bytes ex3/ex3.c | 21 +++++++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) 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..87b48c18a 100644 --- a/ex3/ex3.c +++ b/ex3/ex3.c @@ -9,7 +9,24 @@ int main(void) { - // Your code here + // Your code here + printf("Before forking pid: %d\n", (int)getpid()); - return 0; + 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; } From ad4cffd7fc739960fa3aa396b7fe27f014f124c1 Mon Sep 17 00:00:00 2001 From: luiscmartinez Date: Wed, 20 Feb 2019 15:44:01 -0800 Subject: [PATCH 4/6] finished ex4.c --- ex4/ex4 | Bin 0 -> 8796 bytes ex4/ex4.c | 34 ++++++++++++++++++++++++++++++---- 2 files changed, 30 insertions(+), 4 deletions(-) create mode 100755 ex4/ex4 diff --git a/ex4/ex4 b/ex4/ex4 new file mode 100755 index 0000000000000000000000000000000000000000..3d6e04736f1c858618e983cdc7c83dc13b89f3c0 GIT binary patch literal 8796 zcmeHNQD|FL7(Urr?Y6q6AX3rEZJ|;X+O-U+W6q>D+bwpk-MT5oaY&lm=F&6?$&Fhd z3Wd^#Pzrri@WDs%sffPnz_Il~P>K&#`Vc`!0v3FdInelh=bqc%+?KtHaDO=G|G)p7 z^XI?cpIc7O>GzNK{&`x6$Z;W-j|m|<(4wtEtO^5`5YMBTXi`qZFDIrG*RImrERkk- zBx0N$Oq6me@%~iv6tzCu>=POzH-U6i;|wVs>yAUqm0-N;Gk6#b{iVl=TePiIi&*wU zDN9Z{RoZt2y6~B7DJkEg+cr-PH4m$@{(>%5SFR z6z$xco)C;Tt>fL$y#22U46gTt{4=H}QqJXlUz0=e zqB_4ey?{6v?}Qf&TFPwlN%?i@c*A-Pu|FPjJL!ve@Lr9Nz57mLbj*7vi~w)Iln-b6n3g`I&p3R~{ld>B4;Zvv+|p{@_Wo&YwgB9$XpX< zCGqG%VwcI+{y=B0zd4B=R^|Sts67O(Bz~xEE4{O_v?Ds!xo!Q1d$8J9=#+1DlJE<3 zSpAx}`ZI;gRrt=qXI7S~=7U5HUVQFSwUYR*w%{%~!zGC=d?NSgmBhVz5A@*O%KgFZ zwWXaJcZrDdryBeb)2=A%ZXF7-T5mEu9%b#yBlC@|j#ch_2k)9I_hPrct#PZ^acZN{ z%ikr9-t(%zp!$odkEwn{^`q#=*U$WoHSz0>-aY7z3_4MN*l08|+&ns%-=@Va zYJH2=MOt6e8mILot!Y}H!y2(>^F_-*H;H+s`2Mf}oK;@ZCZZF6jV^k8rx zW#OhCOFFI2<900TpoB?aUIHK(~{& z9`tyMNc=CrF}aXY(aVm7yY?j0>Rw3NInm35kmI7t`$dXp(A^PnZw_(fBc4;(Ju@NZ zSqd~wCH?6AI3B=b0em%pc^~gze=C5k0LIZy(|qQO3rqEX58mB2Pq|K@>3ifD&vl+O n&%mwqVV @@ -10,7 +10,33 @@ int main(void) { - // Your code here + // Your code here + printf("Before forking pid: %d\n", (int)getpid()); - return 0; + pid_t pid = fork(); + + if (pid < 0) + { + exit(1); + } + else if (pid == 0) + { + printf("AFTER forking CHILD pid: %d\n", (int)getpid()); + + char *myargs[2]; + + myargs[0] = "/bin/ls"; + myargs[1] = NULL; + + execvp(myargs[0], myargs); + + printf("this should not be seen"); + } + else + { + + int wc = waitpid(pid, NULL, 0); + printf("this should not be seen"); + } + return 0; } From 8e77d5d588fac691735a3a179f8caab235249763 Mon Sep 17 00:00:00 2001 From: luiscmartinez Date: Thu, 21 Feb 2019 13:35:55 -0800 Subject: [PATCH 5/6] completed ex5 --- ex5/ex5 | Bin 0 -> 9064 bytes ex5/ex5.c | 54 +++++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 45 insertions(+), 9 deletions(-) create mode 100755 ex5/ex5 diff --git a/ex5/ex5 b/ex5/ex5 new file mode 100755 index 0000000000000000000000000000000000000000..5ccff13de0e4ee43ee0e3f0b39a9b9c78b76ecbb GIT binary patch literal 9064 zcmeHNUuauZ7(ZE8t=lx+9>g&ncby$maBDgTby#g@ue-x-#;xjf%(Jw)O=8m|-Xyj~ zim9crm<59mGDUC?GGvJK!9gF!R_55cQLxN0iWDg_=dCD;h?G4Tf8V+1rZ>0h1RuQz z&iTII_b=ys=Sy?%IsNk1Pk-FWn6HMh+%m?PAN@!zW1~y~$JknQ4W08~`!4lmb^o&@ zt!}<*_?L*{%)pTIPW51CwTbYrua+^1F*k z~MR2t{;&_B&jk@14kgRnCmt=G9VoQFf1P$m45`K4sM z`=kkBXS_vEi(CAj?%BQX8MR}#{T)+W`v6QWDudCy#6AfrV-5H_&_uk#SRF_ms9g(y zEC^fzodXSmQf<&2TQ)GZ26P+&#z0r1liu0v@A2JEp^HBVe|ybN73EGrr#;!4O&eR| zv97J*!FU*$+B$Udd;Rp}%FR!-?i-7jt_4%?4m3lip!?9-J*W_L;>Ge;z3+P%d_C!8 z+l=*79QwQAYy?}-Nk?n0oxFiRE560KU_J*1(;2;Q%g!yBSF8(0Xq(U}e$xgkpASh) z`SO~V0WSky2D}V-8Th|s;CU_ooi_Yq4(rv5Lo-^T_HFzWYXzp|)rCvyHOhl|8NbjY z3(Q}nUrU%Ig-MH6+@8R1Z{YILD@Uiz<1jjh&hqM{`6d|i7zVA_`XX%d7sr@M&!xZ| zxR9O6s}~^4Sh5#{Y&Ne>Kz0POyn4oL6LflHXc`|)50fIixe;O^8||gZZL%V)w?Cx; z_$>Xz=YK5>&1!}1YcborI&Q9m;+#<2vJ`c+jJ!H#`rMk|5e%A7%(6PGN-l_{h*yjlZ}9U|f9cd99e8D-6w;qY%OE zB-}`Z4=7>TG2wNrpiYfU`10!1{F!pOJP#oggI1{hnH;b+g}n>fW0U?-dZ-IbXu}tB zU=Dv_Vm-{ivQ%!o4#RRIz2B7^zZT=H7{3wYoEX0q;|($16r+i8Pw|0akoE)R#@9eg zQG{gkH!+haJ!;L*689i+SBYyPZj!hsi91W&UgAC{?j_<*5f>ru1ab6gH~$`SZxMHl zI6WRuD*Z_#9#%F6SQTuphTB*wmeQ4;P%N&8SFoLWPtpKP8ohWWQ&O?;4y6(D6{$l_ zhb=aBC?L7^r#sdC72Bt@-FrF~J*t(#_WkO<&P8o7Wax>E(r?5vdKz)lRE>DrWbA%o z(3}*-Bc4|u1*J~!sMLt3Em{T7df`pdMMj|83?;;(&;3Bsk0t#~(s4=8OFAX#bxG$W z{XtUueYHluXReX-Hq-FbUIx4jcp30A;AOzefR_O;16~Ha40svvGT>#v%fNrg!0HC& zFuAX8<8*Z$>h9&;(Ow?OhKw+K&ZsY0^000gDOPHu8#i%d&bx4lj2rIU91c`O^OY!$ zp|~Q^(Ftx0jm?nj1F;P8P2lMah4>cYQ@G*I^bl+VjOZDhtPs+G=m3WJAn_HugFuEJ z5>`jR_lIJ(Qy zw+ #include @@ -10,13 +10,49 @@ #define MSGSIZE 16 -char* msg1 = "hello world #1"; -char* msg2 = "hello world #2"; -char* msg3 = "hello world #3"; +char *msg1 = "hello world #1"; +char *msg2 = "hello world #2"; +char *msg3 = "hello world #3"; int main(void) { - // Your code here - - return 0; + char inbuf[MSGSIZE]; + int p[2]; + + if (pipe(p) < 0) + { + fprintf(stderr, "pipe failed\n"); + exit(1); + } + + printf("Before forking pid: %d\n", (int)getpid()); + printf("\np[0]: %d\n", p[0]); + printf("p[1]: %d\n", p[1]); + pid_t pid = fork(); + + if (pid < 0) + { + exit(1); + } + else if (pid == 0) + { + printf("AFTER forking CHILD pid: %d\n", (int)getpid()); + + write(p[1], msg1, MSGSIZE); + write(p[1], msg2, MSGSIZE); + write(p[1], msg3, MSGSIZE); + } + else + { + waitpid(pid, NULL, 0); + + printf("AFTER forking PARENT pid: %d\n", (int)getpid()); + for (int i = 0; i < 3; i++) + { + read(p[0], inbuf, MSGSIZE); + printf("Parent writes: %s\n", inbuf); + } + } + + return 0; } From eb3fa7463573c9e4df4719cdf49c06620b9ffed9 Mon Sep 17 00:00:00 2001 From: luiscmartinez Date: Thu, 21 Feb 2019 16:13:03 -0800 Subject: [PATCH 6/6] end of day commit --- ex6/ex6.c | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/ex6/ex6.c b/ex6/ex6.c index 17532d65f..c013c1413 100644 --- a/ex6/ex6.c +++ b/ex6/ex6.c @@ -20,7 +20,36 @@ and `clock_gettime()` should work just fine. int main() { - // Your code here - - return 0; + // Your code here + struct timespec start, end; + uint64_t diff; + + uint64_t sum = 0; + + int numiter = number_iter; + float avg = 0; + int count = 10 + + FILE * + fp; + fp = fopen("writes.csv", "w+"); + while (count-- > 0) + { + while (--numiter > 0) + { + clock_gettime(CLOCK_MONOTONIC, &start); + printf(""); + clock_gettime(CLOCK_MONOTONIC, &end); + + diff = BILLION * (end.tv_sec - start.tv_sec) + end.tv_nsec - start.tv_nsec; + sum += diff; + } + avg = sum / number_iter; + fprintf(fp, "%f\n", avg); + printf("%d: %f ns\n", count, avg); + sum = 0; + numiter = number_iter; + } + + return 0; }