<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://didawiki.cli.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:laboratorio18:esercitazionib</title>
        <description></description>
        <link>https://didawiki.cli.di.unipi.it/</link>
        <lastBuildDate>Fri, 10 Jul 2026 15:38:48 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://didawiki.cli.di.unipi.it/lib/exe/fetch.php/wiki/dokuwiki.svg</url>
            <title>DidaWiki</title>
            <link>https://didawiki.cli.di.unipi.it/</link>
        </image>
        <item>
            <title>Esercitazione 1 (ripasso C)</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/informatica/sol/laboratorio18/esercitazionib/esercitazione1</link>
            <description>Esercitazione 1 (ripasso C)

Esercizio 1

Scrivere un programma C che prende in ingresso 2 interi e 2 stringhe. Stampare a video tutta la lista degli argomenti (argv) e tutte le variabili d&#039;ambiente del programma (envp). Ricordare che una possibile segnatura della funzione main e&#039;:</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 20 Feb 2018 08:33:27 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 2</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/informatica/sol/laboratorio18/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>Tue, 06 Mar 2018 07:45:05 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 3</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/informatica/sol/laboratorio18/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>Tue, 13 Mar 2018 06:55:50 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 4</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/informatica/sol/laboratorio18/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>Tue, 13 Mar 2018 07:41:57 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 5</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/informatica/sol/laboratorio18/esercitazionib/esercitazione5</link>
            <description>Esercitazione 5

Bash scripting. 


Esercizio 1

Scrivere uno script bash che dati come argomenti un nome di directory ed una parola da cercare, stampa la lista di tutti i nomi di file che contengono la parola data nella directory passata come argomento.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 20 Mar 2018 09:48:41 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 6</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/informatica/sol/laboratorio18/esercitazionib/esercitazione6</link>
            <description>Esercitazione 6

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 SC</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 13 Apr 2018 04:41:22 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 7</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/informatica/sol/laboratorio18/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 è molto semplice e non non prevede metacaratteri, redirezione, pipe, etc</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Apr 2019 04:58:34 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 8</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/informatica/sol/laboratorio18/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>Fri, 20 Apr 2018 07:10:04 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 9</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/informatica/sol/laboratorio18/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>Fri, 20 Apr 2018 07:12:09 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 10</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/informatica/sol/laboratorio18/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>Mon, 20 May 2019 14:53:58 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 11</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/informatica/sol/laboratorio18/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>Fri, 04 May 2018 06:51:43 +0000</pubDate>
        </item>
        <item>
            <title>Esercitazione 12</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/informatica/sol/laboratorio18/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>Fri, 04 May 2018 06:52:38 +0000</pubDate>
        </item>
        <item>
            <title>Esempio di programma client/server che utilizza pipe con nome (FIFO)</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/informatica/sol/laboratorio18/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>Tue, 17 Apr 2018 08:25:04 +0000</pubDate>
        </item>
        <item>
            <title>Alcuni esempi di semplici programmi C con processi e pipe</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/informatica/sol/laboratorio18/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>Tue, 17 Apr 2018 08:24:22 +0000</pubDate>
        </item>
        <item>
            <title>Sommario lezioni ed esercitazioni</title>
            <link>https://didawiki.cli.di.unipi.it/doku.php/informatica/sol/laboratorio18/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/Esercitazione: 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>Sun, 17 Feb 2019 08:21:04 +0000</pubDate>
        </item>
    </channel>
</rss>
