SHELL
:
OSNOVA:
PROMPT
Po spuštění programu se objeví prompt. V něm se zadávají příkazy. Pokud je zadaný příkaz dávkový, pak se
spustí tscript. Pokud je to spustitelný program, pak se zpracuje ve funkci run()- pokud obsahuje přesměrování, tak se tyto provedou, program se spustí a po návratu se původní hjodnoty obnoví.Prompt se dá opustit příkazem logout.
POPIS SCRIPTU
Popis příkazů shellu se nachází na jiné stránce. Realizovali jsme ho na základě cshellu, z kterého jsme vybrali vhodné příkazy.
Řešili jsme ho pomocí překladové
gramatiky. Načítali jsme soubor po znaku a pokud znak odpovídal znaku příkazu shellu, tak se překlad dostal do dalšího stavu (realizovaného funkcí). Pokud znak neodpovídal, pak se celý řádek spustí jako proces.
P
ŘESMĚROVÁNÍ VSTUPU A VÝSTUPUP
řed spuštěním procesu jsme vytvořili duplikát stdin a stdout.Pokud se
ve spouštěném procesu nacházel znak ´<´, pak jsme přesměrovali stdin na soubor následující za znakem ´<´.Pokud se
ve spouštěném procesu nacházel znak ´>´, pak jsme přesměrovali stdout na soubor následující za znakem ´>´.Pokud se
ve spouštěném procesu nacházel znak ´>>´, pak jsme přesměrovali stdout na soubor následující za znakem ´>>´ a výstup jsme k němu připojovali.
Tyto kody nemusi vlastne nikomu nic rikat,protoze byly vytvoreny jako
pomocne funkce k vytvoreni ke kodu shellu.
PROMENNE :
zde je umistena datova struktura reprezentujici jednu promennou,
ktera je typu retezec a datova struktura spojity jednosmerne zretezeny
seznam. Dale jsou tu funkce pracujici s temito strukturami.
V nasem problemu spojity seznam reprezentuje promenne shellu.
V tomto souboru jsou potom definovany tyto operace s promennymi:
inicializace,pridavani,ruseni,zmena,ziskani hodnoty promenne
a zruseni vsech promennych.
Dale je tu tabulka systemovych promennych,ktere maji stejny typ
a pracuje se s nimi uplne stejne jako s normalnimi. Takhle je to
reseno proto,aby uzivatel pracujici v shellu nemohl je mazat.
FRONTA :
je jednosmerne zretezeny seznam pro reprezentaci mnoziny.
Prvky mnoziny jsou retezce ruzne delky.
PIPELINE :
obsahuje definici dvou maker a funkci slouzici pro
oboustranne presmerovani standartniho vstupu a vystupu. Tyto funkce
jsou v shellu vyuzity pro redirekci ( presmerovani ) vstupu a vystupu.
V nasem pripade jsou tyto funkce pouzity i pro symbolicky pipelink
pomoci docasneho souboru.
Podrobnejsi vysvetleni je v hlavickach funkci.