1 Zadanie Microshell
Tomasz Zaworski edited this page 2020-11-15 02:28:24 +01:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Zadanie polega na wykorzystaniu języka ANSI C do napisania prostego programu powłoki Microshell. Program ten powinien przyjmować na wejściu polecenia, a następnie wykonywać działania zgodne z ich treścia. Powłoka taka powinna:

  • (1 punkt) wyświetlać znak zachęty w postaci [{path}] $, gdzie {path} jest scieżką do bieżącego katalogu roboczego,
  • (1 punkt) obsługiwać polecenie cd, działające analogicznie do tego znanego nam z powłoki bash,
  • (0,5 punkta) obsługiwać polecenie exit, kończące działanie programu powłoki,
  • (0,5 punkta) obsługiwać polecenie help, wyświetlające na ekranie informacje o autorze programu i oferowanych przez niego funkcjonalnościach,
  • (2 punkty) obsługiwać dwa inne, dowolnie wybrane polecenia powłoki (chodzi tutaj np. o własną, samodzielną, prostą implementację dwóch poleceń, np. cp, których kody nie były podane podczas laboratoriów, ani nie pochodzą ze strony Bartłomieja Przybylskiego),
  • (2 punkty) przyjmować polecenia odwołujące się przez nazwę do skryptow i programów znajdujacych się w katalogach opisanych wartoscią zmiennej środowiskowej PATH oraz umożliwiać wywołanie tych skryptów i programów z argumentami,
  • (1 punkt) wypisywać komunikat błędu, gdy niemożliwe jest poprawne zinterpretowanie polecenia.

Dodatkowo przyznawane są 2 punkty za dodatkowe bajery (w zależności od stopnia skomplikowania problemu), np. wyświetlanie loginu aktualnie zalogowanego użytkownika, obsługę kolorów, obsługę argumentów w cudzysłowach, sensowną obsługę sygnałów (np. Ctrl+Z), obsługę historii poleceń, itp.

Plik Makefile musi obsługiwać polecenie make oraz make clean.

Zadanie uznaje się za zaliczone po uzyskaniu co najmniej 6 punktów.

Kod programu należy umieścić w swoim repozytorium w katalogu microshell w jednym pliku microshell.c. Ponadto należy uzupełnić prosty plik Makefile, który również znajduje się w tym katalogu.

Oddanie zadania

W obecności prowadzącego (będąc zalogowanym swoim koncie studenckim, maszynie wirtualnej, laptopie lub serwerze zadalnym) należy sklonować swoje repozytorium, np.:

$ git clone https://git.wmi.amu.edu.pl/s123456/systemy-operacyjne-2018-rozwiazania.git

Następnie należy pokazać plik Makefile oraz jego działanie:

$ cd systemy-operacyjne-2018-rozwiazania/microshell
$ ls
$ cat Makefile
$ make
$ ls
$ make clean
$ ls

Następnie należy pokazać działanie Microshella:

$ make
$ ./microshell

Ostatecznie należy pokazać kod programu, krótko go omówić i odpowiedzieć na pytania prowadzącego:

$ less microshell.c

Kontrola antyplagiatowa

Kontrola antyplagiatowa zostanie przeprowadzona po rozliczeniu wszystkich programów. Proszę się liczyć z tym, że część osób może zostać wezwana przez prowadzących na dyżur do złożenia wyjaśnień.

Plagiat oznacza ocenę niedostateczną z laboratoriów bez możliwości poprawy w drugim terminie (a co za tym idzie, brak możliwości podejścia do egzaminu) oraz powiadomienie o sprawie prowadzącego wykład i dziekana ds. studenckich.

Pomoc do projektu


Opis zadania pochodzi ze strony Bartłomieja Przybylskiego.