[ milan82 @ 12.06.2006. 13:08 ] @
Htio bi napraviti svoj shell sa nekim jednostavnom funkcijama (tipa redirekcija) a ne znam odakle da pocnem. Je li netko radio nesto slicno? Trazio sam po Internetu, nista nisam korisna nasao:(
[ Nedeljko @ 12.06.2006. 15:27 ] @
Počni od utvrđivanja šta ta skriptica treba da radi. Onda će biti lakše i tebi i nama.
[ milan82 @ 12.06.2006. 20:02 ] @
Nisam mislio na skriptu nego na shell pisan u C-u, kao sto je to npr. bash, samo bi ovaj moj bio puuuno jednostavniji ...
[ #Ninja# @ 12.06.2006. 20:29 ] @
Pa nađi source code nekog shella i pročačkaj. Mislim da je Bourne Shell najjednostavniji.
[ rumpl @ 13.06.2006. 11:52 ] @
Evo za pocetak napisi ove funkcije:
1. funkcija koja cita jednu liniju sa ulaza (naravno, ne mozes samo da uradis jedan read od ne znam ja koliko karaktera, i da se ne brines da li posle toga ostaje jos nesto)
2. Funkcija koja ima 2 argumenta: jedan char* i jedan char. Karakter sluzi kao delimiter po,ocu kojeg odredjujes gde se jedna rec prekida, a gde druga pocinje (ako znas php, to ti je kao funkcija explode), i da funckija vraca char**, koji predstavlja sve reci koje su bile u char*.
3. Funkciju koja je zaduzena za prikupljanje envirement variabli, i naravno, ako ne postoji, da je napravi.
4. Funkciju koja exekuje ono sto je korisnik upisao, naravno ako komanda postoji, i funckija koja ceka da se child program zavrsi, prikupi return value deteta i strpa ga u $? variablu.
5. Trazi kako da predjes u non-canonical mode, trebace ti za shell.
6. Napravi par funkcija koje omogucavaju history.
7. Funkciju koja omoguava da, kad pritisnes <tab>, ispise ime programa, ako postoji.
(Nemoj da radis 6 i 7 pre 5)

Za sada eto imas sve ovo da radis, znam da hoces jednostavan shell, ali, ako si vec zainteresovan, zasto da ga ne uradis dobro.

Mozes da uradis samo 1 i 2, i jos par gluposti i da imas fumkcionalan shell, ali nije zanimljivo, to se uradi na brzaka, pas cak i redirekcija...
[ cynique @ 16.06.2006. 04:56 ] @
Imaš u knjizi:

http://www.amazon.com/gp/produ...-9787934?v=glance&n=283155

Chapter 11, primjer projekta izgradnje jednostavnog shella - sve od std* redirekcije, pipeova, signala, background procesa, kontrole jobova..dovoljno da ti se POSIX API zgadi do kraja života :)


[Ovu poruku je menjao Gojko Vujovic dana 16.06.2006. u 08:07 GMT+1]