From 5bd4d29baa414e7395c9505d31398e80f5e7a169 Mon Sep 17 00:00:00 2001 From: Riley-Brown Date: Wed, 20 Feb 2019 16:12:18 -0500 Subject: [PATCH 1/7] initial commit --- ex1/ex1.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ex1/ex1.c b/ex1/ex1.c index c4b111641..00ad3c5fe 100644 --- a/ex1/ex1.c +++ b/ex1/ex1.c @@ -8,7 +8,9 @@ int main(void) { - // Your code here + int x = 50; + int fork = fork(); + printf("before fork: %i, after fork: %i", x, fork) - return 0; + return 0; } From af42cf8ced66ac14e9e0ee017deb2dc37704079c Mon Sep 17 00:00:00 2001 From: Riley-Brown Date: Wed, 20 Feb 2019 17:10:03 -0500 Subject: [PATCH 2/7] updated ex1 code --- ex1/a.out | Bin 0 -> 8344 bytes ex1/ex1.c | 16 +++++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 ex1/a.out diff --git a/ex1/a.out b/ex1/a.out new file mode 100644 index 0000000000000000000000000000000000000000..fde7737700981427bcc34d8f39172926c66bf2bf GIT binary patch literal 8344 zcmeHMZ){vg5#PIu6DM)bS2us0q>!T|kQDi1yNTnp4fXk7o{^onsS{F>fIxgeL?F2zKo)}H;3^~%NC^@G1eF4!;FMMvl|}}V95ego zcYg2rOe(}Dl(p{7&TnUCXJ_~An_YjQqr21Z^C^^o`nY25bcKzyNWc8 zen35-mJ+{2V|IIsO{mo_b7C5_Qt$v#)@%0LfR{cXa-i^#skkN*ZgN#R097ii1z3-L zomiz=qG4SDJuZF>356cBtT!ckQ=$htD~^F;d^|S(^@%+%ZKpOape)O!_f0F#^%s_D zb^(3Nh7~CEo*+H;^Zk~P2p*9B7K=--_zx<>Rohd^{-zzfV|>q3#2hrnE1n=~?4C0UZ(8fgwH3^gYpaeHuMbA5H=WU49Gzyb=6TXz&w}GS zYqXhdcSzs3cqd>KW{rz8j~l*A#jiMa-X~$e63C#TDPO(_% zxHa~@M7FFZ?xHT>U#^ zY}#k+ek1=D&;6&4Mvp{~Mvq0!>2ve(eRop3ZA@@^-QK0*{gC1kpL7hl%j{s54mmiRzV~t~{+C-|*-| z4{z4n9P88csd|#DWH~9UdxUhDna(TZ5H)UwWO?&ygMH z`^zTpm3tAm7lC^b_-|?fP3pLilbW zH{-mU%iI#10&f-`eoxuWbZ)f^`v0Ktko#BB9v{V3L-cvkpc;w@I+u9xpZ#~$bPh0u$uE@iY`ntwldCfL_zM(l% zzhj#X-^Cs`2WVB|T<;VQP)>yNup1933lr{W2+)ZV>&*d^{R)M3=Ej#QtVcJ#Oktkf zc%{Ppy7A=->&T6-D6Ka)zEa`6bK_O2rOdnp)GBqdEFLV~zqsvGm)>JH9#Y4#@Er{S zbzkZJzyVX-YSiVj^7ohSMcneM74`!+zJ~5a!cIun18S|p`|E5B@F`i&fo{B3h05aC zt>&fqy<4LGR-8xd8t;346;u@u_)#@Sb;Sd|@1h#SZpm z*csLG3*&j7@N)hyHmfvA9$sihogw@_|2l>J5h5=$PL}ZA$@Z_lPB_Qmx_k%|qA*D`MC+>7v(D2Z zkNZ}f(IyCId2bwkDDp3geSO9v+ZPFEKfUrlCp;`ZILV(0f6xg?{Q}`N^p*DRV*#4b zviDd6Su1Dd2L~eqYW^z9w1&+AzKqJzMN~Xvo=9c-V<|IkWwJRlmLE|AncU`aEU&BjJeIxc5N)nGO@oG|10;o(tIad0L{S}xJVNCSCfnw zY*pXU4dn9L;s1Oqmx#x#m|XU?w74$wyjOkRX4bUt^QcSr<(?VOWz3;iI?fk=UHeHY zo=lthT!Mx;?;Xd8`2Ji@%;*b6)1-St1c)yb%ia>Y?r&cM_vZH8G=H+`t5|@q+A&NBYy*h|M)C>KX3a;pU(==pOgyd6t!{T zZIH(fedP6r2;&?a`p5@CaULNNUA*x-Mkwd{&_~_~8WKJDUy>928KQi40FL|;G%Rvn z{{>d3sKPOYKJrk|DG@~f-tnIi{Z^5ilL-RFd5ZPd($A~^5@8$@`OK8Q2ly_~7t~e6 zd1M zzb*QhKjaCZABCb&ul}nZeeeGRAG?eGk3IUx_dzQ?<44?J_6k)vcg8su`62#K=#>W# z`b*NScIe~$Few)jkRuUYz=QstP+oiJALk7G9~S>_#rlLE=8^Mk9wPK{9+_aLsPx*T z^n^a>Th!vzFXfBU0s4Uf=z*W53S;OWd09vlz4D&vQ16j0WA*fN7U)0Z1gQ>vC&k)x vinhRU2^@cCIOl{v*gtuF!*`cHZx&S6c#NZ8yOnd}^7;p*gF6ru>ec@@!Z Date: Wed, 20 Feb 2019 17:59:31 -0500 Subject: [PATCH 3/7] added code for ex2 --- ex2/a.out | Bin 0 -> 8496 bytes ex2/ex2.c | 22 ++++++++++++++++++---- ex2/text.txt | 1 + 3 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 ex2/a.out diff --git a/ex2/a.out b/ex2/a.out new file mode 100644 index 0000000000000000000000000000000000000000..ff919f22a3b9bf6847ce709b6136382791093373 GIT binary patch literal 8496 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 literal 0 HcmV?d00001 diff --git a/ex2/ex2.c b/ex2/ex2.c index 4245375b9..41a0b0bbb 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,21 @@ int main(void) { - // Your code here - + FILE *fp; + + fp = fopen("text.txt", "w+"); + + fprintf(fp, "%s %s", "Hello", "World"); + fclose(fp); + + int rc = fork(); + if (rc == 0) + { + printf("I am the child, pid: %d\n", (int)getpid()); + } + else + { + printf("I am the parent, pid: %d, pid of child: %d\n", (int)getpid(), rc); + } return 0; } diff --git a/ex2/text.txt b/ex2/text.txt index e69de29bb..5e1c309da 100644 --- a/ex2/text.txt +++ b/ex2/text.txt @@ -0,0 +1 @@ +Hello World \ No newline at end of file From 4cd19334ea1ad2601b15c9a5deef6908b27959f1 Mon Sep 17 00:00:00 2001 From: Riley-Brown Date: Wed, 20 Feb 2019 18:14:55 -0500 Subject: [PATCH 4/7] added code for ex3.c --- ex3/a.out | Bin 0 -> 8384 bytes ex3/ex3.c | 13 ++++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 ex3/a.out diff --git a/ex3/a.out b/ex3/a.out new file mode 100644 index 0000000000000000000000000000000000000000..27306f1374687b2595157b558aef79f6c394b44c 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..9f2f2e3c0 100644 --- a/ex3/ex3.c +++ b/ex3/ex3.c @@ -9,7 +9,18 @@ int main(void) { - // Your code here + // printf("goodbye (pid: %d)\n", (int)getpid()); + int rc = fork(); + // child process starts executing here + if (rc == 0) + { + printf("Child: hello\n"); + } + else + { + int wc = waitpid(rc, NULL, 0); + printf("Parent: goodbye\n"); + } return 0; } From 9fc8d2f2eab716e4c1e7d3f047822c0ebf476feb Mon Sep 17 00:00:00 2001 From: Riley-Brown Date: Wed, 20 Feb 2019 18:57:59 -0500 Subject: [PATCH 5/7] added code for ex4 --- ex4/a.out | Bin 0 -> 8432 bytes ex4/ex4.c | 10 +++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 ex4/a.out diff --git a/ex4/a.out b/ex4/a.out new file mode 100644 index 0000000000000000000000000000000000000000..a334a10a239201dc1887224b20a5ac27af004705 GIT binary patch literal 8432 zcmeHMeQZnkqVJ6H>K_N&O?0_6Mu94HSgnKRT)VWE!p7E}&M+)|Rn##5?D{^Glvz zoOY`ACpWUsJ-_pD&;9hdH{WjSY!3zk3MHf-R?J1_x=51ddktWrk=F|7RYL#NO zIT~~2O)ep+TW*PK&`QBWMA@z(=mLJaO7uVxA=3(xl_Q7eyC|qqh6dPvLD&18ZQ^}tCts7H`+Eg-~AFds4sIRTx8qH;*n{~h0 zKkM$?yzeU%9-P-V$|VmjUDcv19$bztjhn|ms5D=!Xj@PRUn^2sdxLo%itAT2{|@sU;`MWy|0DAp+VxS* zvwh!5;&s{dVMpQ3LuTO}^Z2_Hd%HSMRJ=jH%oB@RG--UFw2I4qN;V%?uWn^Y<7Hy@ zn-Q~8bN@y6v`+t2Y-nJ+f3AZ~mSb$Q&R zuZtCni4Sl%$2hQ$#>gf0ht<2U_mKwIXci*luS^z;g^LvE1=2gq%HuB+H2yl{ZU1?L z5sLqpnl%1`h^zD+SFV}MXeah$?1_%T?_&F7G`4H+o2!Semg(cM!tIX2&Cd1QYNdJp zc4+*cw~Iydxepy<)1T1a&ceSt3pZN}e~T5DUNw)81zGLuaujCFK=JYcL%tY4r~IkmATnchg0^j3x*Y*`B6P)sbE$>q%kT zgY?-0uw~KQ;G-0gYjc#~0g~G+Zw^Pk7i{MB#KLv4@Ve%(L3*U$9In*o9Iua)#h`^tFS&x@p%gKR*F|D%y%h1UtwL9;tLek zUn#y&VIP*_Rcf@%yo40(R%{@TK}dzC-d{X0^|yLzUzg$$HGz%b5rov@sdoeqOn#QA z1K0o_K}g*-buaV4q`y?*d?>}2(YuJ@g>*fn?pD~(USUYl?v;C7DPE%@WpSKd)7rcb z=cvCIrxCZt=U|Y=t;si@VZo32@Gl9DbJg{t)OM-_=(IvS*!S%kpE(Zv9>DG5oQ9tf ztv_=-PZ3@&{@MEVW9?^&I*5Y|4b0-_H7&nu#(eSZB%o%_*G19C?}KLP>kqmzbNzfk zc%aPu2B`x}XdJG|I>a_!Lb#!Qm3}>~@tNx(s{NGeGS^Iagw_w{1sYXaf9AgEn8i=` zEcj9J?_ZwbDVztw+S~S1~2(k`|%=fJxmjN|4dl@O6$)& z_coAzxpyzsn{{$dzOOIZtEOL{EN9T_<@cu?y*(u|R(~qf6Hi$QCzH)t@%*sr%?u8u zY{yPSx7Y8eFR#QeUr8&T&BjM8JMCmgR9`keXj_T=;NS?EcsPqRof1`hcq>I@S?&8` zyV|U_-K`eAdzGpsl-2t6-LYLAEu|9uz(x=~Wm;{fcraV{DQjovp5|DmwWq!P@wP6j zE7siE#$NTaTyHL~1OCj1IQM<8sj1}Q&Q8RgxV-uKME(~)znCrEXFUp|^o`F-UT?jMBW$6QW-yR zmLe*e8yR%sJw%huH>6`HkZt#OBjn}SvwVH1E~$A92M1L5v6LhKSQiz57RfVK~l=-If~i? zvg!sBMlRm0(EL3KA7yKn0Sh#G|VbWOMj4-bD6#OMIg@qY0J`YmRpdYfg=AG zvDQVM>6hulM-1$d$AKCo^A?$9rOo2`>8-AAjAt7;6Z=nv&Zi<=x=-z zj&|YiRi8cX>7f2J&%geECia*=JzeMtd2h30{abKkm|7aQmj3%YLm2ICj-a7Gn}&`9-N=Nz7f0EeuxhXDi8Ubqg_|Z RxpjH_*Q9|-C<^u4{} @@ -10,7 +10,11 @@ int main(void) { - // Your code here + printf("Hello World (pid: %d)\n", (int)getpid()); + + int rc = fork(); + + rc = execl("/bin/ls", "ls", NULL); return 0; } From cdbc069b59766d8865ffa50eda132bcf0917a776 Mon Sep 17 00:00:00 2001 From: Riley-Brown Date: Thu, 21 Feb 2019 17:49:03 -0500 Subject: [PATCH 6/7] created pipe and printed out data from parent process --- ex5/a.out | Bin 0 -> 8720 bytes ex5/ex5.c | 37 +++++++++++++++++++++++++++++-------- 2 files changed, 29 insertions(+), 8 deletions(-) create mode 100644 ex5/a.out diff --git a/ex5/a.out b/ex5/a.out new file mode 100644 index 0000000000000000000000000000000000000000..d1691d133589ce30570d76047fa5fc376146e555 GIT binary patch literal 8720 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 literal 0 HcmV?d00001 diff --git a/ex5/ex5.c b/ex5/ex5.c index cbf3b8e61..7282d583d 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 @@ -10,13 +10,34 @@ #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 - + char inbuf[MSGSIZE]; + int p[2], i; + + if (pipe(p) < 0) + exit(1); + + int rc = fork(); + if (rc == 0) + { + printf("Child process\n"); + write(p[1], msg1, MSGSIZE); + write(p[1], msg2, MSGSIZE); + write(p[1], msg3, MSGSIZE); + } + else + { + for (i = 0; i < 3; i++) + { + read(p[0], inbuf, MSGSIZE); + printf("% s\n", inbuf); + } + } + return 0; } From 08ddaf2c42140f606b7b78ebf2466f2dd1543eb0 Mon Sep 17 00:00:00 2001 From: Riley-Brown Date: Thu, 21 Feb 2019 18:56:01 -0500 Subject: [PATCH 7/7] used clock_gettime to return average time in nanoseconds --- ex6/a.out | Bin 0 -> 8448 bytes ex6/ex6.c | 23 +++++++++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 ex6/a.out diff --git a/ex6/a.out b/ex6/a.out new file mode 100644 index 0000000000000000000000000000000000000000..5999a93ca9bdbddb758ebe08301404d174d26d2d GIT binary patch literal 8448 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 TmZI;RUH>9gFw25O?fU-)YrDvt literal 0 HcmV?d00001 diff --git a/ex6/ex6.c b/ex6/ex6.c index 17532d65f..532560e88 100644 --- a/ex6/ex6.c +++ b/ex6/ex6.c @@ -20,7 +20,26 @@ and `clock_gettime()` should work just fine. int main() { - // Your code here - + const char msg[] = "Hello World!"; + int time; + + for (int i = 0; i < number_iter; i++) + { + struct timespec start, end; + + clock_gettime(CLOCK_MONOTONIC, &start); /* mark start time */ + + write(STDOUT_FILENO, msg, sizeof(msg) - 1); + + clock_gettime(CLOCK_MONOTONIC, &end); /* mark the end time */ + + time += BILLION * (end.tv_sec - start.tv_sec) + end.tv_nsec - start.tv_nsec; + ; + } + + time /= number_iter; + + printf("average elapsed time = %d nanoseconds\n", time); + return 0; }