SHELL:

 

OSNOVA:

  1. Prompt
  2. Popis scriptu
  3. Přesměrování vstupu a výstupu
  4. Proměnné

 

 

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ÝSTUPU

Př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.