DIPLOMA TELEDIDATTICO NETTUNO
Prova Pratica di Sistemi Operativi
9 Novembre 2002
Esercizio 1 (10 punti)
Scrivere
un file comandi che venga invocato con tre parametri (si esegua il controllo
sui parametri):
controlla Text Dir N
Il primo
parametro ( Text ) rappresenta una stringa
Il secondo
parametro ( Dir ) rappresenta il nome di un
direttorio già esistente (se non esiste, il comando deve accorgersene e
terminare la propria esecuzione)
Il terzo
parametro ( N ) rappresenta un numero intero
Il comando esegue un
controllo periodico sul direttorio Dir passato come secondo
parametro. In particolare, ogni N secondi, il comando deve
controllare se in Dir eiste un file che contiene la stringa di
testo Text.
Il programma deve terminare non appena trova tale file (se esiste già, il programma deve terminare dopo il primo controllo, altrimenti continua a controllare ogni N secondi finché non viene creato in Dir un file contenente la stringa di testo Text).
Esercizio 2 (20 punti)
Si realizzi un programma C che, utilizzando
le primitive del Sistema Operativo UNIX, abbia un'interfaccia del tipo:
scrivi Nomefile1 Nomefile2 C
Il programma scrivi prevede tre argomenti. Nomefile1
e Nomefile2 sono percorsi completi di file non ancora
esistenti nel file system (se uno dei due esiste già, il programma deve
terminare con un messaggio di errore). C è un carattere.
Il programma è articolato in tre
processi: P0 (il padre), P1 (il figlio) e P2 (nipote di P0, figlio di P1):
·
P0 deve
creare P1 e mettersi in attesa di input da standard input (tastiera). A mano a
mano che riceve caratteri in input, il padre li comunica a P1.
·
P1 deve
creare P2, creare il file Nomefile1 con accesso in scrittura, e mettersi in
attesa dei caratteri inviati dal P0.
·
P2 deve
creare il file Nomefile2 con accesso in scrittura, e mettersi in
attesa dei caratteri inviati dal P1.
A mano a mano che riceve un carattere, P1 deve eseguire un test: se il carattere è uguale a C, deve scriverlo su Nomefile1, altrimenti deve comunicarlo a P2. P2 invece deve scrivere su Nomefile2 tutti i caratteri ricevuti da P1. Il programma termina quando viene chiuso lo standard input (CTRL+D) e i vari processi hanno terminato di scrivere sui rispettivi file ( attendere la terminazione dei rispettivi figli! ).