• Non ci sono risultati.

Prova Pratica di Laboratorio di Sistemi Operativi 20 luglio 2015

N/A
N/A
Protected

Academic year: 2021

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

Copied!
1
0
0

Testo completo

(1)

Prova Pratica di Laboratorio di Sistemi Operativi 20 luglio 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”.

svolgere l'esercizio 1 o l'esercizio 2 (20 punti), se si risolvono entrambi il secondo vale 10 punti.

Esercizio 1: Linguaggio C :

IL programma weakripto deve “criptare” un file.

weakripto filename

sostituisce il contenuto del file indicato come parametri (non fa copie! Il file deve essere riscritto sul posto) e ogni byte deve avere I bit scambiati rispetto al byte corrispondente nel contenuto originale.

Se il primo byte contiene il carattere ascii A (binario 0x41 binario 01000001) il primo byte del file dopo la trasformazione sara' 0x82 (10000010). La lettera ascii B (0x42) rimane invariata.

Si chiede di non usare file temporanei e di non caricare l'intero file in memoria.

Come prova di fuunzionamento, eseguendo due volte lo stesso comando il contenuto del file deve tornare quello originale.

Esercizio 2: Linguaggio C:

Sia dato il seguente programma:

#include <stdio.h>

#include <time.h>

void redirectsetup(char *s) {

}

int main(int argc, char *argv[]) { redirectsetup(argv[1]);

while (1) {

time_t now = time(NULL);

printf("%s",ctime(&now));

sleep(1);

} }

Senza modificare la funzione main, fare in modo che ricevendo un segnale SIGUSR1 l'output venga ridirezionato e aggiunto in append mode al file indicato come primo parametro, al ricevimento di un altro SIGUSR1, l'output torni su console e cosi' via ad ogni ricezione di SIGUSR1.

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

Scrivere un programma che trovi fra tutti i file all'interno di un sottoalbero quello che ha il maggior numero di link simbolici

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

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

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)

Scrivere un programma che per ogni file .c nella directory corrente chiami il compilatore gcc per generare il file oggetto (.o) a meno che esista gia' nella directory un file

deve creare il file 'file1' recuperando il contenuto dal file generato da myt2 dell'esercizio1 Esercizio 3: Script bash o Python: (10 punti):. Il comando che dovrete implementare

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,

se dir1 contiene i file pippo, pluto e paperino e la directory paperopoli e quest'ultima contiene i file paperino, qui quo e qua, all'interno di dir2 divranno essere contenuti

Scrivere un programma che stampi il numero di inode di ogni file presente in una direcotory passata come argomento (o della direcotry corrente se il programma viene chiamato

lancian deve essere completato in modo che lo standard output di tutti le copie venga unificato ed emesso come standard output del programma lancian, in modo ordinato: l'intero