From 0e59526341950ec7e99e09f6b80254ad5b7ac203 Mon Sep 17 00:00:00 2001 From: Barbara Hunter Date: Thu, 21 Feb 2019 17:21:45 -0500 Subject: [PATCH 1/2] ex 3 done --- ex1/ex1 | Bin 0 -> 8572 bytes ex1/ex1.c | 23 ++++++++++++++++++- ex2/ex2 | Bin 0 -> 8844 bytes ex2/ex2.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++ ex2/text.txt | 4 ++++ ex3/ex3 | Bin 0 -> 8620 bytes ex3/ex3.c | 20 ++++++++++++++++- 7 files changed, 107 insertions(+), 2 deletions(-) create mode 100755 ex1/ex1 create mode 100755 ex2/ex2 create mode 100755 ex3/ex3 diff --git a/ex1/ex1 b/ex1/ex1 new file mode 100755 index 0000000000000000000000000000000000000000..5926bb1909c0ab05918ee174e6a691e7b249f41b GIT binary patch literal 8572 zcmeHM?Q0xG7@zBl#u}TeNR2OrY0GI+Vv>s0P)JEiRxdQvYEmge9q(l?x45}G_U_sQ z6at~(5l#YrQT*axpnmWV5F)1H2SEfYR8WZJ0u}lpLMf%^?>9S}>}{<0RosU>_q@zA z&ph*+-7q`z{hdGVJt#zCw-AfFgb+R85BvEH;^f0f=&N_3ik zYcbC?1S&OSU6|<%(fyO1K4EOsCQy!MMkrOY=WEn_isqA#U@~a>)3npxV{|R{h{dp} zRJB&mR<~TydMLX)tRcoG8 znl%B@d~cY1Z<$4)9j1=lXi%zNy6lwl$|)7f+U{JBFYy2{71x|ZJDS69@qf9lBj}*i z#Q4m3s0Hh%OA6LCBDt=3<}|aHQYBYa7v{2MS5<1>ee(rr_YjVJtjNy zCDEVtb(sXT!~L0$&s{)DxtV{euh-=3H63V&^KrhxGs2MV_iAeL>=|ofGI%Fs1UJ~E zcQu$oFpp8S{|MgOVQSK!OBbZJ=>v^OA^ITShNPcs$r?X`&0GVAg*XTKFqkq-j3tM0 z2)9%3LjQ-NPS|`5CAb?rRIhqNu9F?gFSvQwq^H2Fq?jynQoo1Vkfb^IGhY}bN%rWdL;dv5Ub zAnJ0me(z@>n14n3c=j8cc*PVW5F-#H5F-#H5F_yaK;V43@q2pd=J1+zmlIyIZgU6I z`VBwn=ICSCnl!%oLbQJJ?X$3#>$e-$P54&fYgnz;=UQ$qy|*cPnn!iui8BaHFYo;T zTa)y%NH^9H|Dlds-?#*+gRdNi)}o1_js-)xzI`zm>Q{8V0AItpzVRaDnsw_cMC+6v zmt)-dO|8rF{+5aRe(>7}oSFRre%Q+E;5PTkYL+(1n=5B&^d ze7c?b7ILM?_>CLwcDu-}*2Z;ePg45ziLS= zLNhBDq+dWP-#N+q4aKBpEZ{Gm29v^)`&{mWUw|a@Ta`qe`{!=#f0JNCTT0*v%MtTk zdD_S+Bf~MV9wQJV5F-#H5F-#H5F-#H5F-#H5F-#H5F-#H@ZUh-z>(f*R(fDe@#;En zdtODn<|S9gcv+_}$5j^h#kkB~Y~f@_Q({GUz39QC906TIpS5c^wxQJrtAZ=*S^<_w zDBK_JQgcOR&)d0r&Bon$hUpH^Wt@^o@z7$o_>@OSq(Gs&C*j}p@u1?Mw*B*s;QRw} z>kQ*rw1@5IBKC=hJsPojK7tEEeb;I3X~+E1w*3;f$UEnu^gKf7`LG0l1W@dNQ;5F+ DUO1VL literal 0 HcmV?d00001 diff --git a/ex1/ex1.c b/ex1/ex1.c index c4b111641..0f399da4b 100644 --- a/ex1/ex1.c +++ b/ex1/ex1.c @@ -9,6 +9,27 @@ int main(void) { // Your code here + int x = 100; + printf("Hello there, before we call fork(), this is our processID is: (pid: %d) \n", (int)getpid()); + printf("This is the parents value for x: %d \n", x); + int rc = fork(); + + if (rc < 0) + { + printf(stderr, "Forking failed \n"); + } + else if (rc == 0) + { + + printf("Hello there, if rc==0, this is our child processID is: (pid: %d) \n", (int)getpid()); + printf("This is the childs value for x if rc==0: %d \n", x); + } + else + { + int x = 200; + printf("hello, if rc > 0, this is parent here (pid: %d) of child %d\n", (int)getpid(), rc); + printf("This is the childs value for x if rc > 0: %d \n", x); + } return 0; -} +} \ No newline at end of file diff --git a/ex2/ex2 b/ex2/ex2 new file mode 100755 index 0000000000000000000000000000000000000000..0faed262c5ca515ee072f6031cc90ddff1d12aea GIT binary patch literal 8844 zcmeHNU2GIp6uy;KN~N^K)YKo60lQcfS`ca~rluub-G&AV6s&(4cDK{+(CzLzJDau- zH6Rk%)HNGJ2qG~U6JrdTK9ER^5fX_Y(MX6fjlqNmB(nw+crYp&>-XK6X?LeppY&;N zd*__*+{bWe)x_Ttn75AL19Hpv>xSAdtjwIu1$~6AgpX-MA z2gkdG{4a6=q^b@ki*A!S{%SFv@l`rwh`s*qDDf8$|5JSRjz5<-;$nZycX5%w+0RvX z*Otw}&Mx;ep?G)$W_i_F1p1M@N~;hn@VQ+}U9oeigp`;zlvYKEQOHS1+Uceq)dI$? zCl=EIBy;USEiUZKTFgUnJM~k`g{boyfq5G$sLZ)JlQx>;dZf93EZz^yaxW_5SbzG( zsfv$UAAk4en|B^OTDR?C*c8+<^)R*YlX+T<{OhV^!e0Ka^`TA+n!O3hQ@#p96m=%`KBO2QOP+(V7k32u+ONus#OJ z2Cqx~J?Q&?6*VvOF|r{4?&jLYF=`@n9o{~WU8f3Xr>Cc_*Cep^k6WT9$FKg-M8%Kz zyAhgb4dq%kW6-)U4qiBT(HcR=)BL-X4Sr*7)~S?D$(2%0Mq# z4YVRqYmMF9MLYAl-^Slc(J}>*4Ss3;EM2w?qE{$amyx2{fauOuB&DcMNn=}FqB>oQ zWic8hAK)ZAekPPX7n%q{ls9x|dmAddv(GiuV%E3mADm@_pI9Sy_`P-nyJQ5XtTe4I zv%3MZ!K;$lEzsvM%Pb}`SK)bw?0Ql%EBn_=!(`z%u4*#?$hp8tn0>&;d`AG)-^s2g ztY5eWxfWeUR7ciBxoQ&v*}ot~_4m@)mXN4!NQz~9Xq?UdxSc(OC;NBg8Z-N2)|i~D zZI>NEpN!y$m7&$mJ_3*pUXj`GX=zUO%wi&Q1^MihT@TG>e~&ce3lL)6nb5woyvLva zEI%E{BiQM{>+*U?UJuLb5qUi-ugB!|EqOhTYjA<6q`54_6uHhz*@zJMn znHr}oT%yLun!#2Q8t)1FQYTeY{r}iwhxB@WLxN0?8^|XTDWX4cZMl!0U(_Nh~Y*ZRkdjCcx(7#Hl5`1%OGV%5nenbKRQ%Br72;!Pb5c_u!(20l*x88sf>hmld~z&m>%zU=U~f#p3u{= zCWSxnP!g>^pcv7%wzZ`JmbjQF%s^V1^UKf#LK7o~&X|Or5THazU&2Wl({BXFdfP^`d)QE1zl%B3mkO$tXM0miIuafdP_&zKP zOR>cI%je$>kgR-1WucC50X&13;h7e9rd?(f*D#+v@4Tm8a^z)4UUTFPN8WN|x$_>n z#F6!moX@v!^BM3N@EPzK@EPzK@EPzK@EPzK@EPzK@EPzK_pvfZNpJ7-r{&iiWfH zFvD9u9LA-KON<`ztsl npUbN%c`dp->}7Ws++J#Dk)7p*z{1Wfsk@l&GS0cP>^Q|=3Kpjf literal 0 HcmV?d00001 diff --git a/ex2/ex2.c b/ex2/ex2.c index 4245375b9..ac3060613 100644 --- a/ex2/ex2.c +++ b/ex2/ex2.c @@ -5,10 +5,72 @@ #include #include #include +#include int main(void) { // Your code here + FILE *file; + printf("Hello there, before we call fork(), this is our processID is: (pid: %d) \n", (int)getpid()); + file = fopen("text.txt", "a+"); + while (1) + { + int c = fgetc(file); + if (feof(file)) + { + break; + } + printf("%c", c); + } + + int rc = fork(); + + if (rc < 0) + { + printf(stderr, "\nForking failed \n"); + exit(1); + } + else if (rc == 0) + { + printf("\nWe are now attempting to wait for child process to finish. . . \n"); + file = fopen("text.txt", "a+"); + printf("\nHello there, if rc==0, this is our child processID is: (pid: %d) \n", (int)getpid()); + // printf("This is the childs value for file (opening a file): %d \n", file); + file = fopen("text.txt", "a+"); + fprintf(file, "%s %s %s %s %s %s %s", "\nWe", "are", "writing", "in", "the", "child", "process\n"); + fclose(file); + file = fopen("text.txt", "a+"); + while (1) + { + int c = fgetc(file); + if (feof(file)) + { + break; + } + printf("%c", c); + } + fclose(file); + } + else + { + // int wc = waitpid(rc, NULL, 0); + printf("\nOur child has now finished executing, we are back in Parent process with PID: (%d)\n", (int)getpid()); + file = fopen("text.txt", "a+"); + fprintf(file, "%s %s %s %s %s %s %s", "\nWe", "are", "writing", "after", "the", "child", "process\n"); + fclose(file); + // printf("This is the childs value for file (opening a file): %d \n", file); + file = fopen("text.txt", "a+"); + while (1) + { + int c = fgetc(file); + if (feof(file)) + { + break; + } + printf("%c", c); + } + fclose(file); + } return 0; } diff --git a/ex2/text.txt b/ex2/text.txt index e69de29bb..327a4a3dc 100644 --- a/ex2/text.txt +++ b/ex2/text.txt @@ -0,0 +1,4 @@ + +We are writing after the child process + +We are writing in the child process diff --git a/ex3/ex3 b/ex3/ex3 new file mode 100755 index 0000000000000000000000000000000000000000..985d7c1c9bbe9f54ea2993313b38fdade650dd62 GIT binary patch literal 8620 zcmeHNO=w(I6u#3YHpJLWHxhpex0TUUYLbe95C|laX(t#o+7XIquk-UJ^Kkxn^Fo?M zArQJ4LLh=0cjBsxLc0*bolt2D3PM+1bm5|w8Au_5i%>M<_uY3VdGpd1mkRfg^UnFs zJ@?GL-+cpj?#-`{AMG9yB6e7a)k8vvL1?^Jh$}+E6XGRk3aZq?%(>(z$&Wr@v|D1` z@QH|Z?jcdBbn-&FJ4N@8cgKXm7@NRwv@$~}-?`+|3nW@^`vpt}O*c(DagXt}=@F}8 zs8row%GUQn(R$w<4eAYHt>l$kDO5G?UXN?09@m^g9IX+w1W&H(gkIO# zneVC1Aa~!OunpG1}p=X0n318z%pPN_&+l6ajNlqYHds2PX5K=H*et4Nbam% z-VuWvuK}bs#Vyd8awAqklHJLqqp_gzV0mzytW?M)Cmy$93XwEf{o9t^FiF zySdp;Ttq@U@wt9x^)rv>{KoNdn3?nKL;`lR$X>07?RLA!?O^LZy_f0TrH8GfXx)K# zw(5O>Us$q`aZ65K_KTELDpjRlbUf#@bPLkUO-+rRM!>C0{8g7cnJc=bysUZEoKvsQ z%_2N0hih(rQYP}JP~u#*n$NB{|EktP#&atEGm7c)^y@wGs~9vTY`MSX{`VbNDu1I= z=yTsZfSz&Po6&toqo+LXqXsw>4~^Y6_OY=~>1M;00n318z%pPNunbrRECZGS%YbFT zGGH074EzTfICgR<&0!szR=m2-JDyh)AA0f4XC*Tyk7z=LxcrNjx#=*G1ufc&oF)~g2y9xDuT~OFwaqVzs&zd l;C-mM%bgB}+ubH{TYPYSO3yFEazI~)xDI7|WF6pN`~x81XvP2l literal 0 HcmV?d00001 diff --git a/ex3/ex3.c b/ex3/ex3.c index 3a3698c1f..c533c6cf5 100644 --- a/ex3/ex3.c +++ b/ex3/ex3.c @@ -10,6 +10,24 @@ int main(void) { // Your code here + int rc = fork(); + + if (rc < 0) + { + printf(stderr, "Forking failed \n"); + } + else if (rc == 0) + { + + printf("Hello there, if rc==0, this is our child processID is: (pid: %d) \n", (int)getpid()); + printf("Goodbye\n"); + } + else + { + int wc = waitpid(rc, NULL, 0); + printf("Hello there, if rc==0, this is our Parent processID is: (pid: %d) \n", (int)getpid()); + printf("Hello\n"); + } return 0; -} +} \ No newline at end of file From bf57237f596f1646540ebe8103f974a1351c6824 Mon Sep 17 00:00:00 2001 From: Barbara Hunter Date: Thu, 21 Feb 2019 18:47:15 -0500 Subject: [PATCH 2/2] 4 done --- ex4/ex4 | Bin 0 -> 8652 bytes ex4/ex4.c | 17 ++++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100755 ex4/ex4 diff --git a/ex4/ex4 b/ex4/ex4 new file mode 100755 index 0000000000000000000000000000000000000000..4bf4eaec7cb10da868fae49239e3fe112b874338 GIT binary patch literal 8652 zcmeHNL1+_M7=BUfcGqqb4@zYfrb5K+q0waz6+9%1VMnypT`Ndoc_dBR3{6r=Ce|Jb zh1x?1S$fo)>}d}Q9t4ZXvY=oOE?X864<35ZC581~JQ%<4&6{*G)jfN7KmF(bzyJO3 zpEuu|ftUCC_q(_6zYrp_TZqM7LWn3d)+5BSu;2-C2x>#6yqNkiJ(2$T0;Am$>4qOg ztn(6yQjVvujCZG~{;}?u&=_MA7>-hANa^OUyYxH>*IVz$!=S0I+llvRUzt5(F$krs zy0vVz6AIUx03ob5pfh~zcj(pi_UeFFPZsjUtN99I;d-vFH=^^2$$Lk3jBm2)R-E#* zP6*e#qwDqRcH*FP)kcGqwep-(&Pk^{HLGy~b)vW-3yk6%ufy4g3kpJL3OF2CocujWHi|O(C zyb*`%`E$y9NLkGM-}nY}J&VZ@;$S^KFV&ar@9O;7v2*D&XZ>%&3h@R^d8WwpYG_x* zkK(&MLC+F`&(aI)zgvJJ37mvogk>J*lJD{=F!OVRLKI;4K`%ms!dz;QhhRJX5%g!@ zu;8;37PJqVs8uV8qLWSJ=8HLC$~RDsjLXR)333d| z`u8l4pKmoLUq%cAh5^HXVZbn87%&VN20lLqF5C4t_R@bzyV>&>MrSv^9>Vg`ZhUFi zN4K7)Uvb2CJ-uN+O}FT`GPu;!&zBaSi|FzJwl-@Uc4J|ql~OJ1n_NoT&4rh((<<=H zZuGohsDZ!HE&J43beSvZlYiPvPm;epZgHs^-M7+?ufl1^AFAskb^QZZA_sSv ztcc1$sOMD1DGJ0b#Piqllh+8215C|UX6T=QKbLV__>_pm+5RqBDyZz5o5$IChPN3k zWt_5zb5motSU;kYvA>}mhNBVhB#;{!2Nm}AKZv<60^8Z+7!Ki72-_h%7Q!ScSdaJT uc{Bevf#;+8Y&Xe$mT;Se)8n1bC)M+Hv97r5ig@#&iS#J+$lEb1xbFuIxhg6E literal 0 HcmV?d00001 diff --git a/ex4/ex4.c b/ex4/ex4.c index 0221ca96e..3a8044db9 100644 --- a/ex4/ex4.c +++ b/ex4/ex4.c @@ -10,7 +10,22 @@ int main(void) { - // Your code here + // Your code here + int status; + // 2 strings, one is /bin/ls and the other is to finish with a NULL + char *args[2]; + + args[0] = "/bin/ls"; + args[1] = NULL; + int y = fork(); + + if (y == 0) { + execv(args[0], args); + + } else { + + wait(&status); + } return 0; }