From 078dba820d24a2600098beef3aaac16cbff834b3 Mon Sep 17 00:00:00 2001 From: hugogogo Date: Mon, 27 Jun 2022 22:41:14 +0200 Subject: [PATCH] cd builtin ok --- a.out | Bin 16776 -> 0 bytes builds/microshell.o | Bin 2808 -> 3216 bytes microshell | Bin 16944 -> 12864 bytes microshell.c | 61 ++++++++++++++++++++++++++++---------------- 4 files changed, 39 insertions(+), 22 deletions(-) delete mode 100755 a.out diff --git a/a.out b/a.out deleted file mode 100755 index 59770eba2e5e9b1e6addb6d7a6390ec96fdafda3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16776 zcmeHOeQX>@6`%9PiIY0#OY5{wN}FvdQqtm!lP1AwWP0cLoHcSjNNt*`O*d!XB|dZ? z=5CMJRnj_gi+XhpQHw;8s8lEjp@N76ssaM)k~U2dv`Gb}P@x*s2&WAtO+OT2J8J>~!67Ig`Z^UhGivj8q1N+fJIv|D?QaO0Qm%W`q~JZCWsL zd7p)z>RKgnY2a?&uF9LOAGRs~Gb;Crm6>$kx-}~^$>vNtR~l*_YF*d7ZcU_^kF1sj zQ@yAR8dICL^a_}nAWpea_C=#gQ~svp(VmXUrw<=^^rc5Wx#jVXKL3N4pJW?UCdp7B zeI62&ruaO3NXBme0mN*M@I>mREa7Y+jts3z=FQ+Pufkt93%_(0J^^0C#~TJgXkHTO z%ka6r3NPUAesb?RVHo{G31fFUm&l~=Nr|Fa=+6#e*8#I1TB?rF4go@<{LWq{q}7a9`U zO0aJ&UJaG^59;G>cOasV*KQ|Rf6iQts)s0!s?WD38YJ)t@~V)B{KL6Bo=z7&sZR4b)kayBn6F-mFjU8)>6#QM##DA8q?3MfLJYvtA!- zJBq~Ae6)KiiLaxzKSw&S6S^+_Q+ts~hI*j~XKQ+S|5Um3<_qz2RMoflz7U_5kvXIB z>A+b0oc@?T-uOIG`dEBQ4;}dQPm9!!L=Dq_g@!>+2=!C?<7mqmWT;6|LFPA1q_n!{j zx8N|oCHh3Q|FkLu;$PaQ<{A+#ZWdcUJG4G-Umevnmv z5nXgYsmbvfyS;n7?a3R3h<&cB{A#SXtNcN%Csv;B)yJE^3i`J073XP=Ouam9S^Bf* zgXXeTudDIZT|V1gey5}S*O=A#hCX^Eps)W^=`ET+ckYbc726rRJ7yf&y*uJ8k7gFR zR?fT1Oq12|zkCn)9`HTjd%*XA?*ZQfz6X2{_#W^*@IUiF0B?IVu|Vt-8${sh;07Hf z(L1TeGnTav*a7@Dum|`vpb1O@cfM;`zXdKjYgz9D-v>5gCzyQCvhD)XyH5&%d$xEjQkL zgM4jBcJIRHG05?|I1(q`#E0}XAO|YzVSEmtydM)84~4%}vvJ|vnx{}BA9D>A9i6u+6wQTN zW1*HYx5_kiyK-vhn} zd=FIf0G})5bA+^|pukvfCo2aP@#;*5p(|`$qSAa`@oJT(Js$-+=ShLjEz{6O`>e?a%B&15M`SEjcuh& zU#{~1q0-zAW&Xbgd=A`eutjZ#qs~pSSLhPyx~QGGY2(IQwB@~hrJPyP)<@PvTAEjt zWNOvDt6L&1Ya**w*!(4osjMJIWm6SL1o4{#pHFvM3F7oKpFel=bHu)?c4{l*&@Df= zGXC8BJi+7C&DRO;KQ}*LaKF3x1%k(yo4>3w4&6LvWtDyj;ueKgl@Ez+Rrv<7t12I^ z+}CiIyGZc7ck?*;tvMMx9u!wp&f`0CgP3(Ys>&~}+-q>lUs-v6xcRF@wecIo(}3r@ zTOLoVsFShdK|H0xRe64zUDTm@I!C-~U1aPSJtu3>DTh4%#32dEPkQ+46wl9H+lmmM zLL}g*4?h<=B|p;-S!IWx<7{VG%Fp!YW8kaRf3|jgN7`u=`>4X6P|ePdq|D+O{q-F9 zfSB1|zfto1|AUK|l#!X^=RNRv3e4!=V`xB)m^m-zgTEa8GN}GvsmH2V0$!74xW7!v z&m1Rfr5(2{rF8INv1G>hxq{?tX3m$bv)IW=J}lDeJiq*H5%vqpzIWW-H;bJ|!E018 zPxu!2MKwzVKbJZChs4v(4b5iMzg_VQ@Z>j4VHr|3h-ZLdjL)X1A`}cM`4KhFS1SG` z@Fee@Uw>5c*Pv($^0!jp8{ny)Uir7dYb59iwfKjAy@!*@{(@OFOE@XhFD~BTFwCsc zPj@(qxWAFi8+$VOzC^}In)yP}NR);|e?B{yNtvl+q_t(;s_H^?l_YH>3Wdb5k;<8c zVX?cA$fk^BDVrUJiX&w}(sYSt)BS~faUhk+pkjv6xjnWyZp62A7`Q^>mQD(zSx&o6*Cd>p|xp-T~E!CezZ4HvNFT|)zHf|yBjTs|Z%o_uVT#|0nbZv!ZGMzI@ z#T419RGK`9bYHQkOv}4EhJnjC>^HilQ}ybN`{s|kHX>3S&YFonpjohSfMe+#Zu<<1 zNG@-tB71VB$Y3Eqm@1gV4yvz|#$~Q_QcfD`6n7kjf-TLB$3$rijRvM-Ywd$sC;?&=v)_aUMu%JSI?lIlv(dYFdqsD>?z52I<{}5|;Za?pD z7`c4DOXaP90{XPKVSV2JFis$k0=1F+%=)|!NrR&%vp%m=8F~K%5gEvaGkgIF+MBRG zuV)!~Im7j5ImUaTPkS9s^SYN&Q-yi!uV^uj2>F!td40?{p#-^nZ~MQd^xKsj@8=j> z9Qx!lul_f|kx$q@{VS9~p?78I?f-8;*r~56Jw`5HS@oJ1-}UJ8`kj%hGn@V)kNz&D zz^JjJLbk{F6OaCg%3%C}JI15WW@(+^Y(MWC82NVumiPMad8J<|MpKdsE5A!9+N)3N zN-CfA>se1>H}agpt553@r~VGjmS$W|nU28YhpCf@(AuB3nY_N`d&6FNPBXp>-3Es~ z|9*0~86*PB*{O?Z=FcO8#x9r7`y{>x&iB1({!w5(?*FI2Q4?98_fv<|!fqQWIRfi5 z&V{m5UqqE~i;Y|kn_xXo*F%{&E}z$fVWsbtr?Q-3kt$z_SF%|DrV3+6Sl@{}cATP7 zWl&cShHH?CL;4l}@$;8{7vj1*^&g~vObFL`jB~kmF0IL{>wmA+mRRah@Fc~*05vZB Ar~m)} diff --git a/builds/microshell.o b/builds/microshell.o index 9e5e888977035d97ad375b44cf4f08592e5eb71a..96350c06190bccba7298e7ea7c633f9187f7f663 100644 GIT binary patch literal 3216 zcmbtWPiP!f82@IIwi-8WEUj3okb|{pv14LeTiYs|#7W*EvC?J{N@2P?J8_rn>@K@A z8pUnJ)xxk{=+R>?_UusqE>hw^{9dvb3mSm2w;0 zD61N6=GQrN_t68v9z}MG`QB4M-t=c1-0B;fmGUNd*DB>ExJRl+^FGB9zBm+GrQFcS z+_+C=ZkroI!-OqX1y+qeWz|_s@~2F{_6BzyK-X=r&7UcUnrNrUm|t#UjVsKLKTNS| z|FIFIGT&&AEn|t=t%0A&cl92YQ8%7ZF?EB_q;71GrEWYYaMi`OYCQ9e^|k&A5>dZs zG|O|?v+r5$(Ca@p4V>idn>!W8*bWngpdS~DE5C3d+84&2}d7}yM>qSSj zKLpf~#O*b)4Oy4V13hu~*I@C%4jd>NOoJz|p~d=`Sw zhTvC2@M|G>5^<{M3HBs>ud)9Wzh3jrh2W(S9Gr|*%$L%3Hmh5Z^fFmDlQZ#*o6|Fw zC&p*Y%TrTVjX85}d}78hq2ReCu+pha5$r|VGA$0#OL3ToQK(L?N8kQ{vwch!W)A>A+q5dkX$C>M{<0QA8Xy z{$quIP~p$f1x1nTAck;VC{z!viHv_Uz?V1mb_oBs0ACE@aR|Su;D?pGhp9jmS*N`5 zuM0d_=Z6ZPei3B-j)D&=cv*>~uG=pP{))mMMxBJrg2Kl!-tOS?Uf&4d@_vC{`oeJ& zN$lNXr%y|*XlE0;YcIN>rxI=g^kk_7dNJP_Sb4{>b7;%uU0a|2D1M3`b0m*^@02;|xzR<4<@|yye z=S{$%1p#3Q=6?%uiW#Ku)_)9rDP~}r+xh8DP$iiEJv0(Fs*+G26a}3O;L>0A6KI#Z zN<9~xkT3?hp9ue8{pW@Mq8b!+x&9Kqf=aLbTM|Sjh_rtMNq@P2R8KHBx%?>dj|d~Z kxpZHH{)F|KYC}8(-=bZW;QZ;0?B(AQi4v+a>Ouei0AL6$RsaA1 literal 2808 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 literal 16944 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 M#?n~iGH|itU(L9&+yDRo diff --git a/microshell.c b/microshell.c index 54d7b34..74c4ad3 100644 --- a/microshell.c +++ b/microshell.c @@ -1,4 +1,4 @@ -#include // write, fork, execve, pipe +#include // write, fork, execve, pipe, chdir #include // printf #include // strcmp #include // pid_t @@ -8,36 +8,37 @@ #define STDOUT 1 #define STDERR 2 -void print_cmd(char **av) -{ - int i; - int size; +typedef enum {FALSE, TRUE} BOOL; - i = 0; - while (av[i]) - { - size = 0; - while (av[i][size] != '\0') - size++; - write(1, av[i], size); - write(1, " ", 1); - i++; - } - write(1, "\n", 1); +void builtin_cd(char *av) +{ + printf("here\n"); + if (av) + chdir(av); } -//void exec_cmd(char **av, int end, char **en) -void exec_cmd(char **av, char **en) +void exec_cmd(char **av, char **en, int fdin, int fdout) { pid_t pid = fork(); -// av[end] = NULL; if (pid == 0) // child process { + if (fdin != STDIN_FILENO) + { + dup2(fdin, STDIN_FILENO); + close(fdin); + } + if (fdout != STDOUT_FILENO) + { + dup2(fdout, STDOUT_FILENO); + close(fdout); + } execve(av[0], av, en); } else // parent process { + if (fdout != STDOUT_FILENO) + close(fdout); waitpid(pid, NULL, 0); } } @@ -46,22 +47,38 @@ int main(int ac, char **av, char **en) { int i; int start; + int fds[2]; + int old_fdin; if (ac <= 1) return (0); i = 1; + old_fdin = STDIN_FILENO; + fds[STDIN] = STDIN_FILENO; + fds[STDOUT] = STDOUT_FILENO; while (i < ac) { start = i; while (i < ac && strcmp(av[i], "|") && strcmp(av[i], ";")) i++; + if (av[i] && !strcmp(av[i], "|")) + pipe(fds); av[i] = NULL; -// print_cmd(&av[start]); - exec_cmd(&av[start], en); + if (strcmp(av[start], "cd") == 0) + builtin_cd(av[start + 1]); + else + exec_cmd(av + start, en, old_fdin, fds[STDOUT]); + if (old_fdin != STDIN_FILENO) + close(old_fdin); + old_fdin = fds[STDIN]; + fds[STDOUT] = STDOUT_FILENO; if (i < ac) i++; } return (0); } -// https://www.rozmichelle.com/pipes-forks-dups/ +// pipes fork and dups : https://www.rozmichelle.com/pipes-forks-dups/ +// subject and example : https://github.com/Glagan/42-exam-rank-04 +// lsof -c microshell : https://www.thegeekstuff.com/2012/08/lsof-command-examples/ +