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 » 19.Esercitazioni sui segnali


Esercizio 1

Scrivere un programma C che riceva in input da tastiera due numeri interi, a e b, e ne stampi a video:

  • la somma “a+b” solo quando riceve il segnale SIGUSR2;
  • la differenza “a-b” quando riceve il segnale SIGUSR1.

Il programma termina quando riceve SIGINT.

Utilizzare il comando kill per inviare i segnali al processo.

Esercizio 2

Scrivere un programma C che riceva in input da linea di comando il PID del programma dell’Esercizio #1 ed un comando (vedi tabella sotto) e invii il relativo segnale al processo <PID>:

  • Comando: segnale
  • “somma”: SIGUSR2
  • “differenza”: SIGUSR1
  • “fine”: SIGINT

Nota: eseguire il programma dell’esercizio 1 prima dell’esecuzione del programma di questo esercizio.

Esercizio 3

Scrivere un programma C che:

  • crea due figli, ne stampa i relativi PID ed attende che entrambi terminino intercettando SIGCHLD.
  • Il primo figlio legge i primi 100 byte (o meno) dal file “figlio1.txt”, li stampa a video e termina.
  • Il secondo figlio legge i primi 100 byte (o meno) dal file “figlio2.txt”, e li stampa a video, attende 2 secondi e termina.

Nota 1: Creare i due file figlio1.txt e figlio2.txt prima di eseguire il programma.
Nota 2: In quale sequenza vengono visualizzate le informazioni ?
Utilizzando I segnali, “forzare” la visualizzazione dell’intero contenuto di figlio2.txt prima della visualizzazione di figlio1.txt

Esercizio 4

Scrivere un programma C che:

  • Riceve su riga di comando un intero n;
  • Crea n figli;
  • Ad intervalli regolari di un secondo
    • Visualizza il proprio pid ed il pid del figlio I-esimo
    • Invia al figlio I-esimo un segnale
  • I processi figli:
    • Quando ricevono il segnale inviato dal padre:
      • Visualizzano il pid del padre, il proprio pid ed l’intero associato al segnale.

Esercizio 5

Scrivere un programma C che:

  • Crea un figlio;
  • Intercetta I segnali SIGUSR1, SIGUSR2;
  • Quando riceve il segnale x, visualizza “Ricevuto il segnale x”;
  • Riceve in input su riga di comando una sequenza di interi x1,x2,…xk.
  • In un ciclo infinito ad intervalli regolari, invia al processo figlio uno dei segnali ricevuti in input.

Il processo figlio:

  • Intercetta I segnali SIGUSR1, SIGUSR2 e SIGINT;
  • Blocca tutti I segnali eccetto SIGUSR1, SIGUSR2 e SIGINT;
  • Quando riceve SIGUSR1 invia al padre SIGUSR2;
  • Quando riceve SIGUSR2 invia al padre SIGUSR1;
  • Quando riceve SIGINT invia al padre SIGINT.

Esercizio 6

Scrivere un programma C che, in un ciclo infinito:

  • Crea un processo figlio;
  • Attende la ricezione del segnale SIGCHLD;
  • Visualizza le informazioni della struttura siginfo.

Il processo figlio:

  • Visualizza il proprio pid;
  • Attende la ricezione di un segnale;

Utilizzare il comando kill per inviare segnali al processo figlio.

  • 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