• Non ci sono risultati.

Prova Pratica di Laboratorio di Sistemi Operativi 20 maggio 2015

N/A
N/A
Protected

Academic year: 2021

Condividi "Prova Pratica di Laboratorio di Sistemi Operativi 20 maggio 2015"

Copied!
1
0
0

Testo completo

(1)

Prova Pratica di Laboratorio di Sistemi Operativi 20 maggio 2015

Esercizio 0 (“Se copiate, vi cacciamo”)

Rendete la vostra directory home inaccessibile ad altri utenti (sia in lettura che in esecuzione). Rimuovete tutti i file che vi appartengono dalla directory /public.

Non usare system o popen o simili! Non fare exec di “ssh -c”.

Esercizio 1: Linguaggio C (obbligatorio): (20 punti)

Scrivere un programma catsig che copi lo standard input nello standard output (come il comando cat senza parametri, per intenderci) e che stampi la scritta “ho ricevuto un segnale” quando riceve un segnale SIGUSR1.

La particolarita' di questo programma e' che per la gestione dei segnali deve usare la chiamata di sistema signalfd (e non la signal o la sigaction)

Esercizio 2: completamento (10 punti)

Ora, prendendospunto dall'esercizio 1 occorre scrivere due programmi:

sigsend e sigreceive.

Sigreceive non ha come parametri. Per prima cosa stampa il suo pid poi entra in un ciclo in cui:

• aspetta un segnale SIGUSR1

• stampa su stdout (visualizza) il file con nome /tmp/giroXXXX (dove XXXX e' il proprio pid)

cancella il file /tmp/giroXXXX

• Manda un segnale SIGUSR1 al processo dal quale lo ha ricevuto nella operazione due righe sopra questa.

Sigreceive termina quando riceve in SIGUSR2.

Sigsend ha come parametro il pid del processo ricevente. Per ogni riga posta in input da stdin fa le seguenti azioni:

• crea un file /tmp/giroXXXX (dove XXXX e' il pid del processo ricevente), vi scrive la riga letta e lo chiude.

• Spedisce un segnale SIGUSR1 al ricevente

• Aspetta dallo stesso un SIGUSR1.

Quando lo stdin termina (^D da tastiera) manda un SIGUSR2 al ricevente.

All'attivazione scrive nel file il proprio pid e aspetta un segnale sigusr1.Quando riceve il segnale legge Anche in questo esercizio occorre usare solo la signalfd e non la signal o la sigaction.

Esercizio 3: Script bash o Python: (10 punti):

Lo script o il programma devono mostrare le righe che compaiono ripetute nei file della directory corrente

Per ogni riga ripetuta devono essere mostrati: il contenuto della riga, il file dove compare, il numero di linea del file.

Per “righe ripetute” si intendono righe di testo con lo stesso contenuto dalla prima alla ultima lettera significativa, cioe' a meno dell'indentazione iniziale (con spazi o tab).

Esercizio 4: (“Consegnate! E’ ora!”):

Consegnare lo script e il sorgente del programma C, in attachment separati, entro il tempo a disposizione, via e- mail a: renzo chiocciola cs.unibo.it. Il subject del mail deve essere uguale a PROVAPRATICA, i nomi dei file in attachment devono contenere il vostro cognome (per evitare confusioni in fase di correzione).

INOLTRE:

Se volete che il vostro lavoro venga giudicato, lasciate aperta la vostra sessione (incluso il vostro editor) e lasciate il laboratorio. Verrete richiamati uno alla volta per una breve discussione sul vostro elaborato.

Riferimenti

Documenti correlati

Scrivere un programma che preso come parametro a linea comando il path di una directory elenchi solamente I file che hanno un nome che ha come suffisso un numero (es.. I

Scrivere un programma che trovi fra tutti i file all'interno di un sottoalbero tutti I link simbolici che puntano a file o directory inesistenti. Esercizio 4: (“Consegnate!

Se volete che il vostro lavoro venga giudicato, lasciate aperta la vostra sessione (incluso il vostro editor) e lasciate il laboratorio. Verrete richiamati uno alla volta per una

Scrivere un programma python o uno script bash che conti il numero dei file eseguibili presenti nella directory passata come parametro catalogandoli per tipo di interprete. (se il

Scrivere un programma python o uno script bash che scandisca il sottoalbero relativo alle directory passate come parametri (o alla direcotry corrente se non ci sono parametri)

Quindi il programma “dovrebbe” stampare una riga di log per ogni file o directory creata o cancellata in tutto il sottoalbero che ha nella directory-base la radice.. Nota:

Il risultato del programma, stampato su standard output, deve essere un solo numero intero: la somma del numero di caratteri presenti nelle n-me colonne di tutti i file regolari,

Il risultato del programma, stampato su standard output, deve essere un solo numero intero: la somma del numero di caratteri presenti nelle n-me righe di tutti i file regolari,