<?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:laboratorio21:esercitazionib</title>
        <description></description>
        <link>https://didawiki.di.unipi.it/</link>
        <lastBuildDate>Thu, 09 Apr 2026 06:24:12 +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 (ripasso C)</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio21/esercitazionib/esercitazione1</link>
            <description>Esercitazione 1 (ripasso C)

Esercizio 1

Scrivere una funzione C che prende in input come primo argomento una stringa, come secondo argomento la lunghezza della stringa e restituisca nel terzo argomento la stessa stringa con tutti i sui caratteri in maiuscolo:</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 19 Feb 2021 08:23:41 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 2</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio21/esercitazionib/esercitazione2</link>
            <description>Esercitazione 2

Esercizio 1: &#039;&#039;getopt&#039;&#039;

Scrivere un programma C che prende in ingresso 4 opzioni da linea di comando codificate con &#039;-n&#039;, &#039;-m&#039;, &#039;-o&#039;, &#039;-h&#039; nel modo seguente: 


nome-programma -n &lt;num. intero&gt; -m &lt;num. intero&gt; -o &lt;stringa&gt; -h


Il programma dovrà stampare sullo standard output le opzioni riconosciute valide con il relativo argomento. L&#039;opzione &#039;-h&#039; non ha argomento e corrisponde al messaggio di uso. 
Effettuare il parsing della command line utilizzando la funzione di libreria</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 25 Feb 2021 15:25:30 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 3</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio21/esercitazionib/esercitazione3</link>
            <description>Esercitazione 3

Esercizio 1: libtokenizer.a

Inserire in un file &#039;tokenizer.h&#039; la dichiarazione di due funzioni &#039;tokenizer&#039; e &#039;tokenizer_r&#039; (vedere la soluzione proposta nell&#039;Esercitazione 2). &#039;tokenizer&#039; ha la stessa interfaccia di &#039;tokenizer_r&#039; ma mentre la prima usa al suo interno &#039;strtok&#039;, la seconda usa &#039;strtok_r&#039;. Inserire nel file &#039;tokenizer_lib.c&#039; l&#039;implementazione delle due funzioni (cioè la loro definizione). Creare quindi una librerie statica &#039;libtokenizer.a&#039; che offre l&#039;implementazi…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Mar 2021 15:06:29 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 4</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio21/esercitazionib/esercitazione4</link>
            <description>Esercitazione 4

Esercizio 1

Scrivere un programma C che legge il file testuale “/etc/passwd” e scrive in un file testuale la lista dei &#039;login name&#039; del sistema, uno per riga. Il nome del file testuale di output viene passato come unico argomento al programma.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 08 Mar 2021 08:33:16 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 5</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio21/esercitazionib/esercitazione5</link>
            <description>Esercitazione 5

Esercizio 1

Scrivere un programma, utilizzando chiamate di sistema, che implementi l&#039;equivalente del comando Unix cp. Il programma deve accettare 3 argomenti come segue:


mycp_sc filein fileout [buffersize]


L&#039;argomento &#039;buffersize&#039; e&#039; la dimensione del buffer da utilizzare per le letture e scritture con le SCs</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 16 Mar 2021 14:57:01 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione6</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio21/esercitazionib/esercitazione6</link>
            <description>Esercitazione6

Esercizio 1

Realizzare una shell rudimentale (dummyshell) che legge un comando con eventuali parametri dallo standard input e ne invoca l&#039;esecuzione utilizzando una funzione di libreria 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, redirezione, pipe, lettura di variabili d&#039;ambiente, etc</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 15 Apr 2021 03:38:55 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione7</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio21/esercitazionib/esercitazione7</link>
            <description>Esercitazione7

Esercizio 1 (buffer con capacità limitata)

Scrivere un programma C con due threads, un produttore (P) ed un consumatore (C). Il thread P genera, uno alla volta, una sequenza di numeri inserendoli in un buffer di una sola posizione condiviso con il thread C. Il thread consumatore estrae i numeri dal buffer e li stampa sullo standard output. Se il buffer e&#039; pieno P  attende che C consumi il dato, analogamente se il buffer e&#039; vuoto C attende che P produca un valore da consumare.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 08 Apr 2021 08:14:13 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 8</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio21/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 capacità “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</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 23 Apr 2021 08:25:17 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 9</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio21/esercitazionib/esercitazione9</link>
            <description>Esercitazione 9

Esercizio 1

Realizzare in C un programma client ed un programma server. I due processi intergiscono utilizzando socket AF_UNIX. Il client apre una connessione verso il server ed invia richieste (sotto forma di stringhe) corrispondenti ad operazioni aritmetiche inserite dall&#039;utente (es. 2+1, 3/4 + 2/7, sqrt(5) + 3.14,</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 05 May 2021 15:45:58 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 10</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio21/esercitazionib/esercitazione10</link>
            <description>Esercitazione 10

Esercizio 1

Scrivere un programma C che conta il numero di volte in cui l&#039;utente invia il segnale SIGINT (Ctl-C) al processo. Quando il processo riceve il segnale SIGTSTP (Ctl-Z), il numero di SIGINT ricevuti viene stampato sullo standard output. Al terzo segnale SIGTSTP, il processo chiede all&#039;utente se deve terminare o no attendendo una risposta per 10 secondi dallo standard input. Se l&#039;utente non risponde entro 10 secondi un segnale SIGALRM termina il processo.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 06 May 2021 10:19:07 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 11</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio21/esercitazionib/esercitazione11</link>
            <description>Esercitazione 11

Esercizio 1

Realizzare l&#039;Esercizio 2 dell&#039;Esercitazione 10 con un pool di N thread (N è un parametro del programma) secondo il modello Manager-Workers dove però il generico thread Worker gestisce interamente tutta le richieste di un client connesso. Gestire i segnali SIGINT e SIGQUIT per la terminazione consistente del server.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 13 May 2021 08:42:14 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 12</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio21/esercitazionib/esercitazione12</link>
            <description>Esercitazione 12

Esercizio 1

Completare le parti mancanti (sia codice che commento) del seguente script bash script.sh, che archivia e comprime tutti i contenuti della cartella specificata come parametro



....                      # shell da usare per l’interpretazione dello script

if [ $# -ne 1 ]; then                        # (commenta il codice) ........
    echo usa: $(basename $0) nomedirectory   # .........
    exit -1
fi
dir=$1
if [ ! -d $dir ]; then                       # (commenta…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 21 May 2021 06:34:38 +0000</pubDate>
        </item>
        <item>
            <title>Implementazione delle funzioni &quot;readn&quot; e &quot;writen&quot;</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio21/esercitazionib/readnwriten</link>
            <description>Implementazione delle funzioni &quot;readn&quot; e &quot;writen&quot;

(tratto da “Advanced Programming In the UNIX Environment” by W. Richard Stevens and Stephen A. Rago, 2013, 3rd Edition, Addison-Wesley)

readn and writen functions

Pipes, FIFOs, and some devices—notably terminals and networks—have the following
two properties.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 10 Apr 2021 09:58:40 +0000</pubDate>
        </item>
        <item>
            <title>Alcuni esempi di semplici programmi C con processi e pipe senza nome</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio21/esercitazionib/scexamples</link>
            <description>Alcuni esempi di semplici programmi C con processi e pipe senza nome

nproc.c (chiamate usate: &#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, 08 Apr 2021 16:15:24 +0000</pubDate>
        </item>
        <item>
            <title>Sommario lezioni ed esercitazioni</title>
            <link>https://didawiki.di.unipi.it/doku.php/informatica/sol/laboratorio21/esercitazionib/start</link>
            <description>Sommario lezioni ed esercitazioni

----------

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

----------
  Numero    Descrizione    Materiale    Altro    Data    1  [ Introduzione al corso] 
Lezione: Compilazione con gcc: descrizione di alcuni parametri tipici (-g -c -o -I -O). Uso del C99 vs Ansi C. Richiami di C (stringhe,</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 15 Jan 2022 14:12:01 +0000</pubDate>
        </item>
    </channel>
</rss>
