PROCESY


Ważne komendy

Ważne komendy

Skróty

Przesyłanie sygnału do procesu: kill -s sygnał PID



Zadania


Zadanie 1. Napisz trzy skrypty.
Pierwszy skrypt powinien sprawdzić czy długości trzech odcinków pobranych jako argumenty są dodatnie. Jeżeli tak, powinien jako kod wyjścia przekazać 1, w przeciwnym razie 0.
Drugi skrypt powinien sprawdzić czy z długości pobranych jako argument można zbudować trójkąt. Jeżeli tak, powinien jako kod wyjścia przekazać 1, w przeciwnym razie 0.
Trzeci skrypt powinien uruchomić w tle pierwszy i drugi skrypt podając argumenty, które otrzymał oraz pobrać wynik zwrócone przez proces. Następnie powinien wyświetlić informację, czy z pobranych jako argument, długości można zbudować trójkąt.

Zadanie 2. Utwórz trzy skrypty. Pierwszy:

#!/bin/bash

trap ./napis.sh USR1
trap ./koniec.sh USR2
while true
do
 sleep 5
done
exit 0

Drugi powinien wyświetlić dowolny napis, a trzeci przerwać (zabić) proces skryptu. Uruchom pierwszy skrypt. Następnie w drugim terminalu prześlij do procesu uruchamiającego skrypt sygnał USR1 oraz sprawdź co zostanie wyświetlone w pierwszym terminalu. Następnie prześlij sygnał USR2.

Zadanie 3. Przy pomocy skryptów utwórz symulator dwóch dźwigów, które przenoszą materiały budowlane z pierwszego miejsca do drugiego. Pierwszy dźwig powinien przenosić z pierwszego miejsca do bufora pomocniczego, o ograniczonej pojemności, natomiast drugi dźwig pobierać materiał z bufora do drugiego miejsca.
Symulator powinien składać się z: Proces nadzorujący po otrzymaniu sygnału USR1 powinien utworzyć dwa procesy symulujące prace dźwigów oraz uruchomić je w tle, natomiast po otrzymaniu sygnału SIGINT, zakończyć pracę dwóch utworzonych procesów i wyświetlić komunikat.
Proces symulujący pracę pierwszego dźwigu powinien przenosić pojedynczo pliki z pierwszego folderu do folderu symulującego bufor, dopóki pierwszy folder nie będzie pusty. Po przeniesieniu wszystkich plików powinien zakończyć swoje działanie zwracając liczbę przeniesionych plików. Należy też zadbać o to by nie przenosił plików, jeżeli bufor przekroczy swoją pojemność (np. bufor może mieć co najwyżej trzy pliki).
Proces symulujący pracę drugiego dźwigu powinien przenosić pojedynczo pliki z bufora do drugiego folderu o ile w buforze jest jakiś plik oraz zakończyć swoje działanie jeżeli pierwszy "dźwig" zakończył pracę oraz bufor jest już pusty. Po zakończeniu pracy proces powinien zwrócić liczbę przeniesionych plików.
Proces nadzorujący (o ile nie zostanie przerwany przez użytkownika) po rozpoczęciu działania, powinien nadzorować pracę dwóch dźwigów i wypisywać odpowiednie komunikaty (odnośnie rozpoczęcia pracy dźwigu, zakończenia pracy dźwigu, liczby przeniesionych materiałów - dane pobrane od innych procesów). Dodatkowo może posłużyć do komunikacji między procesami symulującymi pracę dźwigu oraz po zakończeniu ich pracy powinien zakończyć swoje działanie.
Pamiętaj, że symulacja powinna zostać utworzona z dokładnie trzech procesów, które są odpowiednio zsynchronizowane oraz każdy z tych procesów powinien kończyć swoje działanie w odpowiednim momencie.