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
 
I corsi di Scienze Matematiche Fisiche e Naturali
 
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