Zadanie z C (Informatyka)

Plik zip (lub podobny, który dam radę otworzyć) zawierający rozwiązania proszę przesłać do 31. stycznia poprzez stronę https://homework.wmi.amu.edu.pl/zsop. Można przesłać dowolnie wiele wersji, sprawdzę tę, która w momencie sprawdzania będzie najnowsza. Limit wielkości pliku to ok 2MB, nie powinno być więc żadnego problemu.

Zadanie (20 punktów). Napisz w języku C prostą powłokę mysh implementującą poniższe funkcjonalności:

  1. Wyświetla znak zachęty (prompt) w postaci [{username}@{hostname} {pwd}] $, wyświetlając nazwę użytkownika, nazwę komputera i katalog bieżący. (1 pkt)
  2. obsługuje polecenie cd pozwalające zmieniać katalog bieżący. (1 pkt)
  3. Obsługuje polecenie exit kończące działanie powłoki. exit powinno być w stanie przyjąć parametr będący liczbą, która zostanie zgłoszona jako kod powrotu powłoki. (1 pkt)
  4. Obsługuje polecenie help wyświetlające pomoc do programu. (0,5 pkt)
  5. Obsługuje polecenie version wyświetlające informacje o autorze. (0,5 pkt)
  6. Obsługuje dwa inne polecenia wbudowane powłoki bash (sekcja “SHELL BUILTIN COMMANDS” w man bash). (2-4 w zależności od trudności)
  7. Pozwala uruchamiać programy z odwołaniami poprzez ścieżki (względne lub bezwzględne). Nie wymagamy obsługi parametrów pozycyjnych. (3 pkt)
  8. Pozwala uruchamiać programy znajdujące się w ścieżce (zmienna PATH) z przekazanymi parametrami. (5 pkt)
  9. Pozwala zmieniać wartości zmiennych środowiskowych poleceniem ZMIENNA=wartość (nie ma zmiennych powłoki, są tylko zmienne środowiskowe). (1pkt)
  10. Pozwala na uruchomienie programu ze zmienioną wartością zmiennej środowiskowej (jak w bashu: ZMIENNA=wartość polecenie). (1 pkt)
  11. Wypisywać błąd w wypadku błędnego/nieistniejącego polecenia. (1 pkt)
  12. Oprócz programu w C, należy stworzyć plik Makefile, który skompiluje program do pliku wykonywalnego mysh po uruchomieniu make. (1 pkt)

Wskazówki: