<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://didawiki.di.unipi.it/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>DidaWiki - informatica:sol:laboratorio17:esercitazionib</title>
        <description></description>
        <link>https://didawiki.di.unipi.it/</link>
        <lastBuildDate>Sat, 04 Apr 2026 20:09:16 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://didawiki.di.unipi.it/lib/exe/fetch.php/wiki/dokuwiki.svg</url>
            <title>DidaWiki</title>
            <link>https://didawiki.di.unipi.it/</link>
        </image>
        <item>
            <title>Esercitazione 1</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio17/esercitazionib/esercitazione1</link>
            <description>Esercitazione 1

Illustrazione dei principali comandi emacs. Cenni a vi.  Illustrazione dell&#039;uso del debugger gdb su un semplice programma. Esercizio sul debugger gdb.  

Illustrazione uso gdb

Vediamo come si usa il debugger  gdb usando il codice usodebug.c</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 22 Feb 2017 11:16:38 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 2</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio17/esercitazionib/esercitazione2</link>
            <description>Esercitazione 2

Esercizio 1: funzioni rientranti (tokenizer_r)

Si consideri il seguente programma:


#include &lt;stdio.h&gt;
#include &lt;string.h&gt;

int main(int argc, char *argv[]) {
    if (argc != 3) {
	fprintf(stderr, &quot;use: %s stringa1 stringa2\n&quot;, argv[0]);
	return -1;
    }
    char* token1 = strtok(argv[1], &quot; &quot;);

    while (token1) {
	printf(&quot;%s\n&quot;, token1);
	char* token2 = strtok(argv[2], &quot; &quot;);
	while(token2) {
	    printf(&quot;%s\n&quot;, token2);
	    token2 = strtok(NULL, &quot; &quot;);
	}
	token1 = strtok(…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 08 Mar 2017 15:38:39 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 3</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio17/esercitazionib/esercitazione3</link>
            <description>Esercitazione 3

Esercizio 1: macro1

Scrivere una funzione macro &#039;CHECK_PTR&#039; che prende due argomenti, un puntatore ed una stringa, e stampa utilizzando perror la stringa passata come argomento prima di uscire dal programma con EXIT_FAILURE. Esempio di utilizzo:</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 06 Mar 2017 10:34:39 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 4</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio17/esercitazionib/esercitazione4</link>
            <description>Esercitazione 4

Discussione su un Makefile

Vogliamo scrivere un Makefile in grado di compilare tutti i sorgenti .c che si trovano nella directory dove si trova il Makefile, personalizzando la compilazione dei file eseguibili:


CC	= gcc -std=c99   # quale compilatore usare per compilare il codice
CFLAGS	= -g -Wall       # flags passati al compilatore per debugging e warning etc..
OPTFLAGS= -O3            # flags passati al compilatore per ottimizzazione del codice
INCLUDES= -I.            # pa…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 15 Mar 2017 11:22:25 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 5</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio17/esercitazionib/esercitazione5</link>
            <description>Esercitazione 5

Scripting Bash

Esercizio 1

Scrivere uno script bash che prende “k&gt;=2” file testuali in input e appende i primi “k-1” files nel file passato come ultimo argomento (k-esimo).   

Esercizio 2

Scrivere uno script bash che dati 2 file di testo in input (f1 ed f2) produce il seguente menu di scelta per l&#039;utente:</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 22 Mar 2017 06:06:04 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 6</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio17/esercitazionib/esercitazione6</link>
            <description>Esercitazione 6

Esercizio 1

Scrivere un programma C che dati come argomenti una lista di file o directories stampa per ogni argomento: il nome del file/directory, il numero dell&#039;inodo corrispondente, il tipo di file (-,l,d,s,...) la machera di bit di protezione (es. rw-r</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 28 Mar 2017 19:17:06 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 7</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio17/esercitazionib/esercitazione7</link>
            <description>Esercitazione 7

Esercizio 1

Realizzare una shell rudimentale che legge un comando con eventuali parametri dallo standard input e ne invoca l&#039;esecuzione utilizzando una funzione della famiglia exec(). La shell deve terminare se viene digitato il comando &#039;exit&#039;. 
Il formato dei comandi accettati dalla shell e&#039; molto semplice e non non prevede metacaratteri, ridirezione, pipe, etc</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 05 Apr 2017 10:12:14 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 8</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio17/esercitazionib/esercitazione8</link>
            <description>Esercitazione 8

Esercizio 1

Scrivere un programma C in cui si attivano M thread produttori ed N thread consumatori che condividono una coda (di lunghezza “infinita”). Il programma accetta come argomento anche un intero K che corrisponde al numero totale di messaggi che i produttori producono concorrentemente nella coda (ogni produttore produce K/M messaggi se M divide K). I consumatori leggono i messaggi dalla coda in un ciclo infinito fino a quando non ricevono un messaggio speciale che li fa…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 26 Apr 2017 15:29:22 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 9</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio17/esercitazionib/esercitazione9</link>
            <description>Esercitazione 9

Esercizio 1

Scrivere un programma chiamato pszombies che stampa il pid dei processi zombies presenti nel sistema 
utilizzando una pipeline di 3 processi. 
Il primo processo esegue il comando ps -A -ostat,pid e fornisce l&#039;input al secondo processo che esegue 
il comando</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 01 May 2017 08:47:43 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 10</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio17/esercitazionib/esercitazione10</link>
            <description>Esercitazione 10

Esercizio 1

Realizzare un programma C che implementa server che rimane sempre attivo in attesa di richieste da parte di uno o piu&#039; processi client. Ogni client richiede al server la trasformazione di tutti i caratteri di una stringa da minuscoli a maiuscoli (es. ciao –&gt; CIAO). Per ogni nuova connessione il server lancia un thread POSIX che gestisce tutte le richieste del client (modello thread x connessione) e quindi termina la sua esecuzione quando il client chiude la conness…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 09 May 2017 12:58:12 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 11</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio17/esercitazionib/esercitazione11</link>
            <description>Esercitazione 11

Gestione dei segnali senza threads. 

Esercizio 1

Riconsiderare l&#039;Esercizio 1 dell&#039;Esercitazione 10. Introdurre nell&#039;implementazione del server, la gestione dei segnali SIGINT e SIGQUIT in modo da lasciare il sistema in uno stato consistente dopo la sua terminazione (cioe&#039; eliminare dal file system il socket AF_UNIX creato per accettare le connessioni ed eventualmente liberare la memoria allocata dinamicamente).</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 15 May 2017 10:27:56 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 12</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio17/esercitazionib/esercitazione12</link>
            <description>Esercitazione 12

Esercizio 1

Estendere l&#039;Esercizio 1 dell&#039;Assegnamento8 (M thread produttori ed N thread consumatori) in modo tale da  gestire il segnale SIGUSR1. In particolare, se il processo riceve il segnale SIGUSR1 dovra&#039; essere stampato sullo standard output: 1) la lunghezza corrente della coda, 2) gli elementi che sono nella coda in quel momento.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 24 May 2017 14:21:27 +0000</pubDate>
        </item>
        <item>
            <title>Esempio di programma client/server che utilizza pipe con nome (FIFO)</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio17/esercitazionib/fifoexample</link>
            <description>Esempio di programma client/server che utilizza pipe con nome (FIFO)

Client e server comunicano con una pipe FIFO. Il server riceve i comandi da eseguire su una FIFO “pubblica” e restituisce le risposte su una FIFO privata del client il cui nome è stato inviato insieme al messaggio di richiesta. Il processo server</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 27 Apr 2017 06:56:47 +0000</pubDate>
        </item>
        <item>
            <title>Alcuni esempi di semplici programmi C con processi e pipe</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio17/esercitazionib/scexamples</link>
            <description>Alcuni esempi di semplici programmi C con processi e pipe

nproc.c (chiamate: &#039;&#039;fork&#039;&#039;, &#039;&#039;wait&#039;&#039;, &#039;&#039;getpid&#039;&#039;)

Si creano nproc processi figli che eseguono un certo numero di iterazioni, si attende quindi la loro terminazione stampando la condizione di terminazione l&#039;exit status e l&#039;eventuale segnale che ha terminato il processo.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 27 Apr 2017 06:02:50 +0000</pubDate>
        </item>
        <item>
            <title>Sommario lezioni ed esercitazioni</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio17/esercitazionib/start</link>
            <description>Sommario lezioni ed esercitazioni

----------

“valgrind: the &#039;impossible&#039; happened: Killed by fatal signal”

----------
  Numero    Descrizione    Materiale    Commenti    Data    1  Introduzione al corso 
Lezione: Compilazione con gcc: flags di base. Uso del C99 vs Ansi C. Richiami di C (stringhe,</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 19 Feb 2018 16:46:32 +0000</pubDate>
        </item>
    </channel>
</rss>
