Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D Le Miniguide all'orientamento Gli eBook di Federica La Corte in Rete
 
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Clemente Galdi » 23.Esercitazioni sui pipe e programmazione multi-threads


Esercizio 1

Scrivere un programma in C che:

  • Il padre
    • Crea un processo figlio.
    • Riceve dal figlio una sequenza di stringhe che visualizza.
    • Termina quando il figlio ha terminato la sequenza.
  • Il figlio
    • Apre un file di testo
    • Legge il file una riga per volta
    • Invia la riga al padre.
    • Termina quando non vi sono più caratteri da leggere dal file.
  • Padre e figlio comunicano attraverso una pipe.

Esercizio 2

Scrivere un programma in C in cui:

  • Il padre
    • Crea due processi figli.
    • Attende la terminazione di entrambi i processi figli, F0, F1.
  • Il figlio Fi:
    • Crea due processi figli, un lettore Li ed uno scrittore Si.
      • Il processo Si:
        • Apre un file di testo
        • Legge il file una riga per volta
        • Invia al processo lettore L1-i la riga letta.
        • Termina quando non vi sono più caratteri da leggere dal file.
      • Il processo lettore Li:
        • Legge stringhe dal canale di comunicazione e le scrive in un file.

Lettori e scrittori comunicano attraverso pipe.

Esercizio 3

Scrivere due programmi in C in cui:

  • Il primo programma:
    • Riceve in input una stringa x;
    • Redirige lo standard output su una fifo;
    • Utilizzando una system call della famiglia exec Esegue il comando “cat x”.
  • Il secondo programma:
    • Legge le stringhe dalla fifo e visualizza il numero totale di caratteri che le compongono.

Esercizio 4

Scrivere un programma in cui:

  • Il master thread
    • Riceve su riga di comando due interi a e b.
    • Crea un thread passando come parametri
      • La stringa “Thread 1″
      • L’intero a
    • Crea un thread passando come parametri
      • La stringa “Thread 2″
      • L’intero b
    • Attende la terminazione di entrambi I thread.
    • Visualizza un messaggio e termina.
  • I thread
    • Stampano a video la stringa e l’intero passati come parametri e terminano.

Esercizio 5

Scrivere un programma in cui:

  • Il master thread
    • Crea due thread;
    • Attende la terminazione di entrambi I thread;
    • Visualizza un messaggio e termina.
  • Il thread 1
    • apre il file text1.txt;
    • Legge il file una riga per volta e stampa la stringa a video.
  • Il thread 2
    • apre il file text2.txt;
    • Legge il file una riga per volta e stampa la stringa a video.

Esercizio 6

Scrivere una applicazione client/server in cui

  • Il client è identificato dal proprio pid.
    • Invia al server uno dei seguenti comandi:
      • LIST: Richiede l’elenco dei client connessi.
      • SEND x: Invia a tutti I client connesi la stringa x.
      • EXIT: Termina il client.
      • KILL: Genera la terminazione del server.
  • Il server è una applicazione multi-thread in cui:
    • Ogni client viene gestito da un thread diverso.
    • Tutte le comunicazioni vengono gestite dal master thread:
      • LIST: Il master thread invia al thread associato al client che ne ha fatto richiesta la lista dei pid dei client associati.
      • SEND x: Il master thread comunica a tutti I thread attivi la stringa x.
    • Quando un thread riceve KILL provoca la terminazione del server.
    • Per evitare problemi di sincronizzazione, per ogni thread esiste un’area di memoria utilizzata esclusivamente per la comunicazione tra il thread ed il master thread.

Client e server comunicano attraverso socket TCP.

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion