<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://so.v2.cs.unibo.it/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pierg</id>
	<title>Sistemi Operativi - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://so.v2.cs.unibo.it/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pierg"/>
	<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php/Special:Contributions/Pierg"/>
	<updated>2026-05-01T20:26:42Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.5</generator>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Prova_Pratica_Es.2_12-02-2009&amp;diff=1117</id>
		<title>Prova Pratica Es.2 12-02-2009</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Prova_Pratica_Es.2_12-02-2009&amp;diff=1117"/>
		<updated>2015-05-24T16:48:21Z</updated>

		<summary type="html">&lt;p&gt;Pierg: /* Soluzione di Dado e Pierg */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soluzione di Dado e Pierg==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Scrivere un programma in linguaggio C che crei due named pipe (passate per argomento), le apra in lettura e&lt;br /&gt;
e copi in standard output i dati via via disponibili da ogni pipe.&lt;br /&gt;
Test di funzionamento: aprire tre finestre di emulazione terminale. Nella prima lanciare: mergepipe p1 p2, nella seconda:&lt;br /&gt;
cat &amp;gt;p1, nella terza cat&amp;gt;p2.&lt;br /&gt;
Tutto cio' che scriverete o nella seconda o nella terza finestra deve comparire nella prima.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;poll.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
#include &amp;lt;fcntl.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define MAX 2048&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv[]) {&lt;br /&gt;
    if (argc &amp;lt; 3) {&lt;br /&gt;
        perror(&amp;quot;Argomenti sbagliati&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
        struct pollfd pino [2];&lt;br /&gt;
        nfds_t n = 2;&lt;br /&gt;
        char buf[MAX];&lt;br /&gt;
        &lt;br /&gt;
        mkfifo(argv[1], 0666);&lt;br /&gt;
        mkfifo(argv[2], 0666);&lt;br /&gt;
        pino[0].fd = open(argv[1], O_RDONLY | O_NONBLOCK);&lt;br /&gt;
        pino[1].fd = open(argv[2], O_RDONLY | O_NONBLOCK);&lt;br /&gt;
        pino[0].events = POLLIN;&lt;br /&gt;
        pino[1].events = POLLIN;&lt;br /&gt;
        &lt;br /&gt;
        while(1) {&lt;br /&gt;
            int ret = poll(pino, n, 100);&lt;br /&gt;
            if (ret == 1) {&lt;br /&gt;
                if (pino[0].revents == POLLIN) {&lt;br /&gt;
                    ssize_t x = read(pino[0].fd, buf, MAX);&lt;br /&gt;
                    buf[x+1] = '\0';&lt;br /&gt;
                    printf(&amp;quot;%s&amp;quot;, buf);&lt;br /&gt;
                    pino[0].revents = 0;&lt;br /&gt;
                }&lt;br /&gt;
                else {&lt;br /&gt;
                    ssize_t x = read(pino[1].fd, buf, MAX);&lt;br /&gt;
                    buf[x+1] = '\0';&lt;br /&gt;
                    printf(&amp;quot;%s&amp;quot;, buf);&lt;br /&gt;
                    pino[1].revents = 0;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else if (ret == 2) {&lt;br /&gt;
                ssize_t x = read(pino[0].fd, buf, MAX);&lt;br /&gt;
                buf[x+1] = '\0';&lt;br /&gt;
                printf(&amp;quot;%s&amp;quot;, buf);&lt;br /&gt;
                pino[0].revents = 0;&lt;br /&gt;
                x = read(pino[1].fd, buf, MAX);&lt;br /&gt;
                buf[x+1] = '\0';&lt;br /&gt;
                printf(&amp;quot;%s&amp;quot;, buf);&lt;br /&gt;
                pino[1].revents = 0;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Prova_Pratica_Es.2_12-02-2009&amp;diff=1116</id>
		<title>Prova Pratica Es.2 12-02-2009</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Prova_Pratica_Es.2_12-02-2009&amp;diff=1116"/>
		<updated>2015-05-24T16:47:48Z</updated>

		<summary type="html">&lt;p&gt;Pierg: Created page with &amp;quot;==Soluzione di Dado e Pierg== '''Esercizio 1''' &amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt; Scrivere un programma in linguaggio C che crei due named pipe (passate per argomento), le apra in lettura ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soluzione di Dado e Pierg==&lt;br /&gt;
'''Esercizio 1'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Scrivere un programma in linguaggio C che crei due named pipe (passate per argomento), le apra in lettura e&lt;br /&gt;
e copi in standard output i dati via via disponibili da ogni pipe.&lt;br /&gt;
Test di funzionamento: aprire tre finestre di emulazione terminale. Nella prima lanciare: mergepipe p1 p2, nella seconda:&lt;br /&gt;
cat &amp;gt;p1, nella terza cat&amp;gt;p2.&lt;br /&gt;
Tutto cio' che scriverete o nella seconda o nella terza finestra deve comparire nella prima.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;poll.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
#include &amp;lt;fcntl.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define MAX 2048&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv[]) {&lt;br /&gt;
    if (argc &amp;lt; 3) {&lt;br /&gt;
        perror(&amp;quot;Argomenti sbagliati&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
        struct pollfd pino [2];&lt;br /&gt;
        nfds_t n = 2;&lt;br /&gt;
        char buf[MAX];&lt;br /&gt;
        &lt;br /&gt;
        mkfifo(argv[1], 0666);&lt;br /&gt;
        mkfifo(argv[2], 0666);&lt;br /&gt;
        pino[0].fd = open(argv[1], O_RDONLY | O_NONBLOCK);&lt;br /&gt;
        pino[1].fd = open(argv[2], O_RDONLY | O_NONBLOCK);&lt;br /&gt;
        pino[0].events = POLLIN;&lt;br /&gt;
        pino[1].events = POLLIN;&lt;br /&gt;
        &lt;br /&gt;
        while(1) {&lt;br /&gt;
            int ret = poll(pino, n, 100);&lt;br /&gt;
            if (ret == 1) {&lt;br /&gt;
                if (pino[0].revents == POLLIN) {&lt;br /&gt;
                    ssize_t x = read(pino[0].fd, buf, MAX);&lt;br /&gt;
                    buf[x+1] = '\0';&lt;br /&gt;
                    printf(&amp;quot;%s&amp;quot;, buf);&lt;br /&gt;
                    pino[0].revents = 0;&lt;br /&gt;
                }&lt;br /&gt;
                else {&lt;br /&gt;
                    ssize_t x = read(pino[1].fd, buf, MAX);&lt;br /&gt;
                    buf[x+1] = '\0';&lt;br /&gt;
                    printf(&amp;quot;%s&amp;quot;, buf);&lt;br /&gt;
                    pino[1].revents = 0;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else if (ret == 2) {&lt;br /&gt;
                ssize_t x = read(pino[0].fd, buf, MAX);&lt;br /&gt;
                buf[x+1] = '\0';&lt;br /&gt;
                printf(&amp;quot;%s&amp;quot;, buf);&lt;br /&gt;
                pino[0].revents = 0;&lt;br /&gt;
                x = read(pino[1].fd, buf, MAX);&lt;br /&gt;
                buf[x+1] = '\0';&lt;br /&gt;
                printf(&amp;quot;%s&amp;quot;, buf);&lt;br /&gt;
                pino[1].revents = 0;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=1115</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=1115"/>
		<updated>2015-05-24T16:46:35Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questo &amp;amp;egrave; il Wiki del Corso di Sistemi Operativi&lt;br /&gt;
&lt;br /&gt;
[[Prova Pratica Es.2 12-02-2009]]&lt;br /&gt;
&lt;br /&gt;
[[Prova Teorica 13-05-2011]]&lt;br /&gt;
&lt;br /&gt;
[[Prova Teorica 16-07-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Prova Pratica 20-02-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Prova Pratica 02-07-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Buffer Limitato]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1-2 Prova Pratica 30-05-2012]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 25-09-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 30-05-2012]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 23-06-09]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 25-09-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 20-06-2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 29-05-14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 2 esame 29/05/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Grep piramidale (non tanto grep) esame 2.7.2003]]&lt;br /&gt;
&lt;br /&gt;
[[Ricerca e stampa MD5checksum (Prova pratica 21-01-2015)]]&lt;br /&gt;
&lt;br /&gt;
[[Differenza tra due sottoalberi del file system (Prova pratica 22-07-2011)]]&lt;br /&gt;
&lt;br /&gt;
[[Aggiorna cartelle (Prova pratica 23-01-2014)]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 prova pratica 29 maggio 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Ampiezza di tutti i file di una directory divisi per suffisso (Prova pratica 29-05-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 12-09-11]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 25-01-2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 22-06-2011]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica, 18-07-2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica, 17-07-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica, 23-01-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica Esercizio 3 esami 17_07_12 - 17_06_14 - 19_07_10]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 23_01_14]]&lt;br /&gt;
&lt;br /&gt;
[[Albero binario 2002-07-23]]&lt;br /&gt;
&lt;br /&gt;
[[50 Sfumature di Fibonacci]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 20/06/12]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 17/06/14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 17 07 14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.01.2015]]&lt;br /&gt;
&lt;br /&gt;
[[bash scripting 2002 gennaio]]&lt;br /&gt;
&lt;br /&gt;
[[Process Race (Prova pratica 18-07-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Arduino web controller]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.06.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova_pratica_21_01_15]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 17.06.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 - 25.09.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20/02/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Demone ruba input]]&lt;br /&gt;
&lt;br /&gt;
[[wifi daemon]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Problema Dei Filosofi]]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unibo.it/~renzo/so/portability.tgz portability.tgz]&lt;br /&gt;
&lt;br /&gt;
[[listx.h commentato + esempio su container_of]]&lt;br /&gt;
&lt;br /&gt;
[[Congettura di Goldbach]]&lt;br /&gt;
&lt;br /&gt;
[[list segments]]&lt;br /&gt;
&lt;br /&gt;
[[Execv/fork su file aperto]]&lt;br /&gt;
&lt;br /&gt;
[[Angry_Children]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 12/02/2009]]&lt;br /&gt;
&lt;br /&gt;
[[(Programma C) Un quadrato nella matrice]]&lt;br /&gt;
&lt;br /&gt;
[[&amp;quot;classi&amp;quot;_in_C]]&lt;br /&gt;
&lt;br /&gt;
[[Esempi del 02 dicembre 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Materiale dell'AA 2013-14]]&lt;br /&gt;
----&lt;br /&gt;
Ricordate che per creare un account o quando viene richiesto di risolvere un semplice calcolo occorre ricordare quanto scritto [[qui]]&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=1114</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=1114"/>
		<updated>2015-05-24T16:45:06Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questo &amp;amp;egrave; il Wiki del Corso di Sistemi Operativi&lt;br /&gt;
&lt;br /&gt;
[[Prova Pratica Es.2 12-02-2011]]&lt;br /&gt;
&lt;br /&gt;
[[Prova Teorica 13-05-2011]]&lt;br /&gt;
&lt;br /&gt;
[[Prova Teorica 16-07-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Prova Pratica 20-02-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Prova Pratica 02-07-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Buffer Limitato]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1-2 Prova Pratica 30-05-2012]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 25-09-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 30-05-2012]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 23-06-09]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 25-09-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 20-06-2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 29-05-14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 2 esame 29/05/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Grep piramidale (non tanto grep) esame 2.7.2003]]&lt;br /&gt;
&lt;br /&gt;
[[Ricerca e stampa MD5checksum (Prova pratica 21-01-2015)]]&lt;br /&gt;
&lt;br /&gt;
[[Differenza tra due sottoalberi del file system (Prova pratica 22-07-2011)]]&lt;br /&gt;
&lt;br /&gt;
[[Aggiorna cartelle (Prova pratica 23-01-2014)]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 prova pratica 29 maggio 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Ampiezza di tutti i file di una directory divisi per suffisso (Prova pratica 29-05-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 12-09-11]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 25-01-2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 22-06-2011]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica, 18-07-2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica, 17-07-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica, 23-01-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica Esercizio 3 esami 17_07_12 - 17_06_14 - 19_07_10]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 23_01_14]]&lt;br /&gt;
&lt;br /&gt;
[[Albero binario 2002-07-23]]&lt;br /&gt;
&lt;br /&gt;
[[50 Sfumature di Fibonacci]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 20/06/12]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 17/06/14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 17 07 14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.01.2015]]&lt;br /&gt;
&lt;br /&gt;
[[bash scripting 2002 gennaio]]&lt;br /&gt;
&lt;br /&gt;
[[Process Race (Prova pratica 18-07-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Arduino web controller]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.06.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova_pratica_21_01_15]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 17.06.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 - 25.09.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20/02/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Demone ruba input]]&lt;br /&gt;
&lt;br /&gt;
[[wifi daemon]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Problema Dei Filosofi]]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unibo.it/~renzo/so/portability.tgz portability.tgz]&lt;br /&gt;
&lt;br /&gt;
[[listx.h commentato + esempio su container_of]]&lt;br /&gt;
&lt;br /&gt;
[[Congettura di Goldbach]]&lt;br /&gt;
&lt;br /&gt;
[[list segments]]&lt;br /&gt;
&lt;br /&gt;
[[Execv/fork su file aperto]]&lt;br /&gt;
&lt;br /&gt;
[[Angry_Children]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 12/02/2009]]&lt;br /&gt;
&lt;br /&gt;
[[(Programma C) Un quadrato nella matrice]]&lt;br /&gt;
&lt;br /&gt;
[[&amp;quot;classi&amp;quot;_in_C]]&lt;br /&gt;
&lt;br /&gt;
[[Esempi del 02 dicembre 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Materiale dell'AA 2013-14]]&lt;br /&gt;
----&lt;br /&gt;
Ricordate che per creare un account o quando viene richiesto di risolvere un semplice calcolo occorre ricordare quanto scritto [[qui]]&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Prova_Pratica_2012.05.30&amp;diff=1089</id>
		<title>Prova Pratica 2012.05.30</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Prova_Pratica_2012.05.30&amp;diff=1089"/>
		<updated>2015-05-12T10:14:56Z</updated>

		<summary type="html">&lt;p&gt;Pierg: Created page with &amp;quot;==Soluzione di Dado e Pierg== &amp;lt;source lang=&amp;quot;txt&amp;quot;&amp;gt;  &amp;lt;/source&amp;gt;  &amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt; #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; #include &amp;quot;s2argv/s2argv.h&amp;quot; #define MAKEFILE &amp;quot;minimakefil...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soluzione di Dado e Pierg==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;txt&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;quot;s2argv/s2argv.h&amp;quot;&lt;br /&gt;
#define MAKEFILE &amp;quot;minimakefile&amp;quot;&lt;br /&gt;
#define RUN &amp;quot;run&amp;quot;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char * argv[]){&lt;br /&gt;
	FILE *mf;&lt;br /&gt;
	char *line=NULL;&lt;br /&gt;
	char *target,*command;&lt;br /&gt;
	int dim=0;&lt;br /&gt;
	mf=fopen(MAKEFILE,&amp;quot;r&amp;quot;);&lt;br /&gt;
	if(mf==NULL){&lt;br /&gt;
		fprintf(stderr,&amp;quot;minimakefile not found!\n&amp;quot;);&lt;br /&gt;
		exit(1);&lt;br /&gt;
	}&lt;br /&gt;
	while(getline(&amp;amp;line,&amp;amp;dim,mf)&amp;gt;0){&lt;br /&gt;
		target=strtok(line,&amp;quot;:&amp;quot;);&lt;br /&gt;
		command=strtok(NULL,&amp;quot;\n&amp;quot;);&lt;br /&gt;
		if(strcmp(target,RUN)==0){&lt;br /&gt;
			system_noshell(command);&lt;br /&gt;
		}&lt;br /&gt;
		else if(fopen(target,&amp;quot;r&amp;quot;)==NULL){&lt;br /&gt;
			system_noshell(command);&lt;br /&gt;
		}&lt;br /&gt;
        else{&lt;br /&gt;
			fprintf(stderr,&amp;quot;target %s già esistente: non eseguo\n&amp;quot;,target);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	free(line);&lt;br /&gt;
	fclose(mf);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;txt&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
#include &amp;quot;s2argv/s2argv.h&amp;quot;&lt;br /&gt;
#define MAKEFILE &amp;quot;minimakefile&amp;quot;&lt;br /&gt;
#define RUN &amp;quot;run&amp;quot;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char * argv[]){&lt;br /&gt;
	FILE *mf;&lt;br /&gt;
	char *line=NULL;&lt;br /&gt;
	char *target, *tmp;&lt;br /&gt;
	int dim = 0;&lt;br /&gt;
    int a = b = 0;&lt;br /&gt;
    struct stat st_target, st_tmp;&lt;br /&gt;
    &lt;br /&gt;
	mf=fopen(MAKEFILE,&amp;quot;r&amp;quot;);&lt;br /&gt;
	if(fd==NULL){&lt;br /&gt;
		fprintf(stderr,&amp;quot;minimakefile not found!\n&amp;quot;);&lt;br /&gt;
		exit(1);&lt;br /&gt;
	}&lt;br /&gt;
	while(getline(&amp;amp;line,&amp;amp;dim,mf)&amp;gt;0){&lt;br /&gt;
        if (line[0] == &amp;quot;\t&amp;quot;) {&lt;br /&gt;
            if(a || b){&lt;br /&gt;
                system_noshell(line + 1);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
		else{&lt;br /&gt;
			a = b = 0;&lt;br /&gt;
            target = strtok(line, &amp;quot;:&amp;quot;)&lt;br /&gt;
            if(fopen(target,&amp;quot;r&amp;quot;)==NULL){&lt;br /&gt;
                a = 1;&lt;br /&gt;
		    }&lt;br /&gt;
            else if(strcmp(target,RUN)==0){&lt;br /&gt;
                char *command = strtok(NULL, &amp;quot;\n&amp;quot;);&lt;br /&gt;
                system_noshell(command);&lt;br /&gt;
		    }&lt;br /&gt;
            else {&lt;br /&gt;
                stat(target, &amp;amp;st_target);&lt;br /&gt;
                while ((tmp = (strtok(NULL, &amp;quot; &amp;quot;))!=NULL){&lt;br /&gt;
                    stat(tmp, &amp;amp;st_tmp);&lt;br /&gt;
                    if (st_tmp.st_mtime &amp;gt; st_target.st_mtime ) {&lt;br /&gt;
                        b = 1;&lt;br /&gt;
                        break;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
		    }&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	free(line);&lt;br /&gt;
	fclose(fd);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=1088</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=1088"/>
		<updated>2015-05-12T10:11:24Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questo &amp;amp;egrave; il Wiki del Corso di Sistemi Operativi&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1-2 Prova Pratica 30-05-2012]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 25-09-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 30-05-2012]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 23-06-09]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 25-09-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 20-06-2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 29-05-14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 2 esame 29/05/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Grep piramidale (non tanto grep) esame 2.7.2003]]&lt;br /&gt;
&lt;br /&gt;
[[Ricerca e stampa MD5checksum (Prova pratica 21-01-2015)]]&lt;br /&gt;
&lt;br /&gt;
[[Linker fisico (Prova pratica 20-02-2014)]]&lt;br /&gt;
&lt;br /&gt;
[[Differenza tra due sottoalberi del file system (Prova pratica 22-07-2011)]]&lt;br /&gt;
&lt;br /&gt;
[[Aggiorna cartelle (Prova pratica 23-01-2014)]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 prova pratica 29 maggio 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Ampiezza di tutti i file di una directory divisi per suffisso (Prova pratica 29-05-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 12-09-11]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 25-01-2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 22-06-2011]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica, 18-07-2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica, 17-07-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica, 23-01-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica Esercizio 3 esami 17_07_12 - 17_06_14 - 19_07_10]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 23_01_14]]&lt;br /&gt;
&lt;br /&gt;
[[Albero binario 2002-07-23]]&lt;br /&gt;
&lt;br /&gt;
[[50 Sfumature di Fibonacci]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 20/06/12]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 17/06/14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 17 07 14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.01.2015]]&lt;br /&gt;
&lt;br /&gt;
[[bash scripting 2002 gennaio]]&lt;br /&gt;
&lt;br /&gt;
[[Process Race (Prova pratica 18-07-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Arduino web controller]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.06.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova_pratica_21_01_15]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 17.06.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 - 25.09.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20/02/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Demone ruba input]]&lt;br /&gt;
&lt;br /&gt;
[[wifi daemon]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Problema Dei Filosofi]]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unibo.it/~renzo/so/portability.tgz portability.tgz]&lt;br /&gt;
&lt;br /&gt;
[[listx.h commentato + esempio su container_of]]&lt;br /&gt;
&lt;br /&gt;
[[Congettura di Goldbach]]&lt;br /&gt;
&lt;br /&gt;
[[list segments]]&lt;br /&gt;
&lt;br /&gt;
[[Execv/fork su file aperto]]&lt;br /&gt;
&lt;br /&gt;
[[Angry_Children]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 12/02/2009]]&lt;br /&gt;
&lt;br /&gt;
[[(Programma C) Un quadrato nella matrice]]&lt;br /&gt;
&lt;br /&gt;
[[&amp;quot;classi&amp;quot;_in_C]]&lt;br /&gt;
&lt;br /&gt;
[[Esempi del 02 dicembre 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Materiale dell'AA 2013-14]]&lt;br /&gt;
----&lt;br /&gt;
Ricordate che per creare un account o quando viene richiesto di risolvere un semplice calcolo occorre ricordare quanto scritto [[qui]]&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=1087</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=1087"/>
		<updated>2015-05-12T10:11:10Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questo &amp;amp;egrave; il Wiki del Corso di Sistemi Operativi&lt;br /&gt;
[[Esercizio 1-2 Prova Pratica 30-05-2012]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 25-09-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 30-05-2012]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 23-06-09]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 25-09-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 20-06-2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 29-05-14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 2 esame 29/05/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Grep piramidale (non tanto grep) esame 2.7.2003]]&lt;br /&gt;
&lt;br /&gt;
[[Ricerca e stampa MD5checksum (Prova pratica 21-01-2015)]]&lt;br /&gt;
&lt;br /&gt;
[[Linker fisico (Prova pratica 20-02-2014)]]&lt;br /&gt;
&lt;br /&gt;
[[Differenza tra due sottoalberi del file system (Prova pratica 22-07-2011)]]&lt;br /&gt;
&lt;br /&gt;
[[Aggiorna cartelle (Prova pratica 23-01-2014)]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 prova pratica 29 maggio 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Ampiezza di tutti i file di una directory divisi per suffisso (Prova pratica 29-05-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 12-09-11]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 25-01-2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 22-06-2011]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica, 18-07-2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica, 17-07-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica, 23-01-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica Esercizio 3 esami 17_07_12 - 17_06_14 - 19_07_10]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 23_01_14]]&lt;br /&gt;
&lt;br /&gt;
[[Albero binario 2002-07-23]]&lt;br /&gt;
&lt;br /&gt;
[[50 Sfumature di Fibonacci]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 20/06/12]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 17/06/14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 17 07 14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.01.2015]]&lt;br /&gt;
&lt;br /&gt;
[[bash scripting 2002 gennaio]]&lt;br /&gt;
&lt;br /&gt;
[[Process Race (Prova pratica 18-07-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Arduino web controller]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.06.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova_pratica_21_01_15]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 17.06.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 - 25.09.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20/02/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Demone ruba input]]&lt;br /&gt;
&lt;br /&gt;
[[wifi daemon]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Problema Dei Filosofi]]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unibo.it/~renzo/so/portability.tgz portability.tgz]&lt;br /&gt;
&lt;br /&gt;
[[listx.h commentato + esempio su container_of]]&lt;br /&gt;
&lt;br /&gt;
[[Congettura di Goldbach]]&lt;br /&gt;
&lt;br /&gt;
[[list segments]]&lt;br /&gt;
&lt;br /&gt;
[[Execv/fork su file aperto]]&lt;br /&gt;
&lt;br /&gt;
[[Angry_Children]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 12/02/2009]]&lt;br /&gt;
&lt;br /&gt;
[[(Programma C) Un quadrato nella matrice]]&lt;br /&gt;
&lt;br /&gt;
[[&amp;quot;classi&amp;quot;_in_C]]&lt;br /&gt;
&lt;br /&gt;
[[Esempi del 02 dicembre 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Materiale dell'AA 2013-14]]&lt;br /&gt;
----&lt;br /&gt;
Ricordate che per creare un account o quando viene richiesto di risolvere un semplice calcolo occorre ricordare quanto scritto [[qui]]&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_3_Prova_Pratica_30-05-2012&amp;diff=1078</id>
		<title>Esercizio 3 Prova Pratica 30-05-2012</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_3_Prova_Pratica_30-05-2012&amp;diff=1078"/>
		<updated>2015-05-10T16:30:27Z</updated>

		<summary type="html">&lt;p&gt;Pierg: Created page with &amp;quot;==Soluzione di Pierg== &amp;lt;source lang =&amp;quot;python&amp;quot;&amp;gt; import sys, os  lines = [] directory = sys.argv[1]  for file in os.listdir(directory):     lines.append(file)      for el in lin...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soluzione di Pierg==&lt;br /&gt;
&amp;lt;source lang =&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import sys, os&lt;br /&gt;
&lt;br /&gt;
lines = []&lt;br /&gt;
directory = sys.argv[1]&lt;br /&gt;
&lt;br /&gt;
for file in os.listdir(directory):&lt;br /&gt;
    lines.append(file)&lt;br /&gt;
    &lt;br /&gt;
for el in lines:&lt;br /&gt;
    for le in lines:&lt;br /&gt;
        if el[::-1] == le:&lt;br /&gt;
            print el&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=1077</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=1077"/>
		<updated>2015-05-10T16:27:49Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questo &amp;amp;egrave; il Wiki del Corso di Sistemi Operativi&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 30-05-2012]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 23-06-09]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 25-09-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 20-06-2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 29-05-14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 2 esame 29/05/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Grep piramidale (non tanto grep) esame 2.7.2003]]&lt;br /&gt;
&lt;br /&gt;
[[Ricerca e stampa MD5checksum (Prova pratica 21-01-2015)]]&lt;br /&gt;
&lt;br /&gt;
[[Linker fisico (Prova pratica 20-02-2014)]]&lt;br /&gt;
&lt;br /&gt;
[[Differenza tra due sottoalberi del file system (Prova pratica 22-07-2011)]]&lt;br /&gt;
&lt;br /&gt;
[[Aggiorna cartelle (Prova pratica 23-01-2014)]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 prova pratica 29 maggio 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Ampiezza di tutti i file di una directory divisi per suffisso (Prova pratica 29-05-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 12-09-11]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 25-01-2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 22-06-2011]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica, 18-07-2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica, 17-07-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica, 23-01-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica Esercizio 3 esami 17_07_12 - 17_06_14 - 19_07_10]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 23_01_14]]&lt;br /&gt;
&lt;br /&gt;
[[Albero binario 2002-07-23]]&lt;br /&gt;
&lt;br /&gt;
[[50 Sfumature di Fibonacci]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 20/06/12]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 17/06/14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 17 07 14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.01.2015]]&lt;br /&gt;
&lt;br /&gt;
[[bash scripting 2002 gennaio]]&lt;br /&gt;
&lt;br /&gt;
[[Process Race (Prova pratica 18-07-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Arduino web controller]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.06.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova_pratica_21_01_15]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 17.06.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 - 25.09.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20/02/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Demone ruba input]]&lt;br /&gt;
&lt;br /&gt;
[[wifi daemon]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Problema Dei Filosofi]]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unibo.it/~renzo/so/portability.tgz portability.tgz]&lt;br /&gt;
&lt;br /&gt;
[[listx.h commentato + esempio su container_of]]&lt;br /&gt;
&lt;br /&gt;
[[Congettura di Goldbach]]&lt;br /&gt;
&lt;br /&gt;
[[list segments]]&lt;br /&gt;
&lt;br /&gt;
[[Execv/fork su file aperto]]&lt;br /&gt;
&lt;br /&gt;
[[Angry_Children]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 12/02/2009]]&lt;br /&gt;
&lt;br /&gt;
[[(Programma C) Un quadrato nella matrice]]&lt;br /&gt;
&lt;br /&gt;
[[&amp;quot;classi&amp;quot;_in_C]]&lt;br /&gt;
&lt;br /&gt;
[[Esempi del 02 dicembre 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Materiale dell'AA 2013-14]]&lt;br /&gt;
----&lt;br /&gt;
Ricordate che per creare un account o quando viene richiesto di risolvere un semplice calcolo occorre ricordare quanto scritto [[qui]]&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=1075</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=1075"/>
		<updated>2015-05-10T16:27:16Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questo &amp;amp;egrave; il Wiki del Corso di Sistemi Operativi&lt;br /&gt;
[[Esercizio 3 Prova Pratica 30-05-2012]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 25-09-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 20-06-2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 29-05-14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 2 esame 29/05/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Grep piramidale (non tanto grep) esame 2.7.2003]]&lt;br /&gt;
&lt;br /&gt;
[[Ricerca e stampa MD5checksum (Prova pratica 21-01-2015)]]&lt;br /&gt;
&lt;br /&gt;
[[Linker fisico (Prova pratica 20-02-2014)]]&lt;br /&gt;
&lt;br /&gt;
[[Differenza tra due sottoalberi del file system (Prova pratica 22-07-2011)]]&lt;br /&gt;
&lt;br /&gt;
[[Aggiorna cartelle (Prova pratica 23-01-2014)]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 prova pratica 29 maggio 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Ampiezza di tutti i file di una directory divisi per suffisso (Prova pratica 29-05-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 12-09-11]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 25-01-2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 22-06-2011]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica, 18-07-2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica, 17-07-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica, 23-01-2014]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica Esercizio 3 esami 17_07_12 - 17_06_14 - 19_07_10]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 23_01_14]]&lt;br /&gt;
&lt;br /&gt;
[[Albero binario 2002-07-23]]&lt;br /&gt;
&lt;br /&gt;
[[50 Sfumature di Fibonacci]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 20/06/12]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 17/06/14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 17 07 14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.01.2015]]&lt;br /&gt;
&lt;br /&gt;
[[bash scripting 2002 gennaio]]&lt;br /&gt;
&lt;br /&gt;
[[Process Race (Prova pratica 18-07-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Arduino web controller]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.06.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova_pratica_21_01_15]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 17.06.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 - 25.09.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20/02/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Demone ruba input]]&lt;br /&gt;
&lt;br /&gt;
[[wifi daemon]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Problema Dei Filosofi]]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unibo.it/~renzo/so/portability.tgz portability.tgz]&lt;br /&gt;
&lt;br /&gt;
[[listx.h commentato + esempio su container_of]]&lt;br /&gt;
&lt;br /&gt;
[[Congettura di Goldbach]]&lt;br /&gt;
&lt;br /&gt;
[[list segments]]&lt;br /&gt;
&lt;br /&gt;
[[Execv/fork su file aperto]]&lt;br /&gt;
&lt;br /&gt;
[[Angry_Children]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 12/02/2009]]&lt;br /&gt;
&lt;br /&gt;
[[(Programma C) Un quadrato nella matrice]]&lt;br /&gt;
&lt;br /&gt;
[[&amp;quot;classi&amp;quot;_in_C]]&lt;br /&gt;
&lt;br /&gt;
[[Esempi del 02 dicembre 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Materiale dell'AA 2013-14]]&lt;br /&gt;
----&lt;br /&gt;
Ricordate che per creare un account o quando viene richiesto di risolvere un semplice calcolo occorre ricordare quanto scritto [[qui]]&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Prova_pratica_Esercizio_3_esami_17_07_12_-_17_06_14_-_19_07_10&amp;diff=1028</id>
		<title>Prova pratica Esercizio 3 esami 17 07 12 - 17 06 14 - 19 07 10</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Prova_pratica_Esercizio_3_esami_17_07_12_-_17_06_14_-_19_07_10&amp;diff=1028"/>
		<updated>2015-04-14T12:59:46Z</updated>

		<summary type="html">&lt;p&gt;Pierg: /* Soluzione di Pierg */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soluzione di Pierg==&lt;br /&gt;
&amp;lt;source lang =&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Esame 17 07 12&lt;br /&gt;
&lt;br /&gt;
Lo script o il programma Python deve fornire una lista dei file all'interno di un sottoalbero ordinati &lt;br /&gt;
secondo il la “profondita'” nell'albero (prima tutti quelli nella radice del sottoalbero,&lt;br /&gt;
poi tutti quelli al secondo livello), in ordine alfabetico fra quelli allo stesso livello.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import os, sys&lt;br /&gt;
&lt;br /&gt;
pathname = sys.argv[1]&lt;br /&gt;
&lt;br /&gt;
def tree (pathname):&lt;br /&gt;
	for path, dirs, files in os.walk(pathname):&lt;br /&gt;
		print dirs&lt;br /&gt;
		files.sort()&lt;br /&gt;
		level = path.replace(pathname, '').count(os.sep)&lt;br /&gt;
		indent = ' ' * 4 * (level)&lt;br /&gt;
		print('{}{}/'.format(indent, os.path.basename(path)))&lt;br /&gt;
		subindent = ' ' * 4 * (level + 1)&lt;br /&gt;
		for file in files:&lt;br /&gt;
			print('{}{}'.format(subindent, file))&lt;br /&gt;
&lt;br /&gt;
tree(pathname)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang =&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Esame 17 06 14&lt;br /&gt;
&lt;br /&gt;
Il comando che dovrete implementare come script shell o programma python e'  maxfreq.&lt;br /&gt;
Maxfreq ha come parametro un carattere alfanumerico e una directory.&lt;br /&gt;
Es:&lt;br /&gt;
maxfreq q  mydir&lt;br /&gt;
Cerca in tutto il sottoalbero del file system originato da mydir il file che ha la maggior frequenza della lettera indicata &lt;br /&gt;
(in questo caso la maggior frequenza di 'q'). Fornisce in output il nome del file e la frequenza in percentuale.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import os, sys&lt;br /&gt;
&lt;br /&gt;
pathname = sys.argv[2]&lt;br /&gt;
c = sys.argv[1]&lt;br /&gt;
&lt;br /&gt;
def maxfreq(c, pathname):&lt;br /&gt;
	maxi = 0&lt;br /&gt;
	for path, dirs, files in os.walk(pathname):&lt;br /&gt;
		for file in files:  &lt;br /&gt;
			if (file.count(c) &amp;gt; maxi):&lt;br /&gt;
				maxi = file.count(c)&lt;br /&gt;
				f = file&lt;br /&gt;
	print (&amp;quot;The file is {} with maxfreq {}&amp;quot;.format(f, maxi))&lt;br /&gt;
				&lt;br /&gt;
				&lt;br /&gt;
&lt;br /&gt;
maxfreq(c, pathname)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang =&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Esame 19 07 10&lt;br /&gt;
&lt;br /&gt;
Lo script deve prendere in input un file e invertire le righe  &lt;br /&gt;
pari con quelle dispari. &lt;br /&gt;
Se l'input e'&lt;br /&gt;
hello&lt;br /&gt;
world&lt;br /&gt;
goodbye&lt;br /&gt;
moon&lt;br /&gt;
l'output deve essere&lt;br /&gt;
world&lt;br /&gt;
hello&lt;br /&gt;
moon&lt;br /&gt;
goodbye&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
lines = []&lt;br /&gt;
arg = sys.argv[1]&lt;br /&gt;
in_file = open(arg,'r')&lt;br /&gt;
with in_file as objectarg:&lt;br /&gt;
  for line in objectarg:  &lt;br /&gt;
    lines.append(line)&lt;br /&gt;
    if 'str' in line:&lt;br /&gt;
      break&lt;br /&gt;
&lt;br /&gt;
print (lines)&lt;br /&gt;
&lt;br /&gt;
i = 0&lt;br /&gt;
j = 1&lt;br /&gt;
 &lt;br /&gt;
while (j &amp;lt; len(lines)):&lt;br /&gt;
	temp = lines[i]&lt;br /&gt;
	lines[i] = lines[j]&lt;br /&gt;
	lines[j] = temp&lt;br /&gt;
	i += 2&lt;br /&gt;
	j += 2&lt;br /&gt;
&lt;br /&gt;
print (lines)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Prova_pratica_Esercizio_3_esami_17_07_12_-_17_06_14_-_19_07_10&amp;diff=999</id>
		<title>Prova pratica Esercizio 3 esami 17 07 12 - 17 06 14 - 19 07 10</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Prova_pratica_Esercizio_3_esami_17_07_12_-_17_06_14_-_19_07_10&amp;diff=999"/>
		<updated>2015-04-12T00:01:42Z</updated>

		<summary type="html">&lt;p&gt;Pierg: Created page with &amp;quot;==Soluzione di Pierg== &amp;lt;source lang =&amp;quot;text&amp;quot;&amp;gt; Esame 17 07 12  Lo script o il programma Python deve fornire una lista dei file all'interno di un sottoalbero ordinati  secondo il...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soluzione di Pierg==&lt;br /&gt;
&amp;lt;source lang =&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Esame 17 07 12&lt;br /&gt;
&lt;br /&gt;
Lo script o il programma Python deve fornire una lista dei file all'interno di un sottoalbero ordinati &lt;br /&gt;
secondo il la “profondita'” nell'albero (prima tutti quelli nella radice del sottoalbero,&lt;br /&gt;
poi tutti quelli al secondo livello), in ordine alfabetico fra quelli allo stesso livello.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import os, sys&lt;br /&gt;
&lt;br /&gt;
pathname = sys.argv[1]&lt;br /&gt;
&lt;br /&gt;
def tree (pathname):&lt;br /&gt;
	for path, dirs, files in os.walk(pathname):&lt;br /&gt;
		print dirs&lt;br /&gt;
		files.sort()&lt;br /&gt;
		level = path.replace(pathname, '').count(os.sep)&lt;br /&gt;
		indent = ' ' * 4 * (level)&lt;br /&gt;
		print('{}{}/'.format(indent, os.path.basename(path)))&lt;br /&gt;
		subindent = ' ' * 4 * (level + 1)&lt;br /&gt;
		for file in files:&lt;br /&gt;
			print('{}{}'.format(subindent, file))&lt;br /&gt;
&lt;br /&gt;
tree(pathname)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang =&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Esame 17 06 14&lt;br /&gt;
&lt;br /&gt;
Il comando che dovrete implementare come script shell o programma python e'  maxfreq.&lt;br /&gt;
Maxfreq ha come parametro un carattere alfanumerico e una directory.&lt;br /&gt;
Es:&lt;br /&gt;
maxfreq q  mydir&lt;br /&gt;
Cerca in tutto il sottoalbero del file system originato da mydir il file che ha la maggior frequenza della lettera indicata &lt;br /&gt;
(in questo caso la maggior frequenza di 'q'). Fornisce in output il nome del file e la frequenza in percentuale.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import os, sys&lt;br /&gt;
&lt;br /&gt;
pathname = sys.argv[2]&lt;br /&gt;
c = sys.argv[1]&lt;br /&gt;
&lt;br /&gt;
def maxfreq(c, pathname):&lt;br /&gt;
	maxi = 0&lt;br /&gt;
	for path, dirs, files in os.walk(pathname):&lt;br /&gt;
		for file in files:  &lt;br /&gt;
			if (file.count(c) &amp;gt; maxi):&lt;br /&gt;
				maxi = file.count(c)&lt;br /&gt;
				f = file&lt;br /&gt;
	print (&amp;quot;The file is {} with maxfreq {}&amp;quot;.format(f, maxi))&lt;br /&gt;
				&lt;br /&gt;
				&lt;br /&gt;
&lt;br /&gt;
maxfreq(c, pathname)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang =&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Esame 19 07 10&lt;br /&gt;
&lt;br /&gt;
Lo script deve prendere in input un file e invertire le righe  &lt;br /&gt;
pari con quelle dispari. &lt;br /&gt;
Se l'input e'&lt;br /&gt;
hello&lt;br /&gt;
world&lt;br /&gt;
goodbye&lt;br /&gt;
moon&lt;br /&gt;
l'output deve essere&lt;br /&gt;
world&lt;br /&gt;
hello&lt;br /&gt;
moon&lt;br /&gt;
goodbye&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
words = []&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
	try:&lt;br /&gt;
		word = raw_input()&lt;br /&gt;
	except KeyboardInterrupt:&lt;br /&gt;
		break&lt;br /&gt;
	words.append(word)&lt;br /&gt;
&lt;br /&gt;
print(words)&lt;br /&gt;
i = 0&lt;br /&gt;
j = 1&lt;br /&gt;
&lt;br /&gt;
while (j &amp;lt; len(words)):&lt;br /&gt;
	temp = words[i]&lt;br /&gt;
	words[i] = words[j]&lt;br /&gt;
	words[j] = temp&lt;br /&gt;
	i += 2&lt;br /&gt;
	j += 2&lt;br /&gt;
&lt;br /&gt;
print(words)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=998</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=998"/>
		<updated>2015-04-11T23:58:31Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questo &amp;amp;egrave; il Wiki del Corso di Sistemi Operativi&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica Esercizio 3 esami 17_07_12 - 17_06_14 - 19_07_10]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 23_01_14]]&lt;br /&gt;
&lt;br /&gt;
[[Ampiezza di tutti i file di una directory divisi per suffisso (Prova pratica 29-05-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Albero binario 2002-07-23]]&lt;br /&gt;
&lt;br /&gt;
[[50 Sfumature di Fibonacci]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 20/06/12]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 17/06/14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 17 07 14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.01.2015]]&lt;br /&gt;
&lt;br /&gt;
[[bash scripting 2002 gennaio]]&lt;br /&gt;
&lt;br /&gt;
[[Process Race (Prova pratica 18-07-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Arduino web controller]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.06.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova_pratica_21_01_15]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 17.06.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 - 25.09.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20/02/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Demone ruba input]]&lt;br /&gt;
&lt;br /&gt;
[[wifi daemon]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Problema Dei Filosofi]]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unibo.it/~renzo/so/portability.tgz portability.tgz]&lt;br /&gt;
&lt;br /&gt;
[[listx.h commentato + esempio su container_of]]&lt;br /&gt;
&lt;br /&gt;
[[Congettura di Goldbach]]&lt;br /&gt;
&lt;br /&gt;
[[list segments]]&lt;br /&gt;
&lt;br /&gt;
[[Execv/fork su file aperto]]&lt;br /&gt;
&lt;br /&gt;
[[Angry_Children]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 12/02/2009]]&lt;br /&gt;
&lt;br /&gt;
[[(Programma C) Un quadrato nella matrice]]&lt;br /&gt;
&lt;br /&gt;
[[&amp;quot;classi&amp;quot;_in_C]]&lt;br /&gt;
&lt;br /&gt;
[[Esempi del 02 dicembre 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Materiale dell'AA 2013-14]]&lt;br /&gt;
----&lt;br /&gt;
Ricordate che per creare un account o quando viene richiesto di risolvere un semplice calcolo occorre ricordare quanto scritto [[qui]]&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Prova_pratica_Esercizio_3_esami_17_07_12_-_17-06-14&amp;diff=997</id>
		<title>Prova pratica Esercizio 3 esami 17 07 12 - 17-06-14</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Prova_pratica_Esercizio_3_esami_17_07_12_-_17-06-14&amp;diff=997"/>
		<updated>2015-04-11T19:19:15Z</updated>

		<summary type="html">&lt;p&gt;Pierg: Created page with &amp;quot;==Soluzione di Pierg== &amp;lt;source lang =&amp;quot;text&amp;quot;&amp;gt; Esame 17 07 12  Lo script o il programma Python deve fornire una lista dei file all'interno di un sottoalbero ordinati  secondo il...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soluzione di Pierg==&lt;br /&gt;
&amp;lt;source lang =&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Esame 17 07 12&lt;br /&gt;
&lt;br /&gt;
Lo script o il programma Python deve fornire una lista dei file all'interno di un sottoalbero ordinati &lt;br /&gt;
secondo il la “profondita'” nell'albero (prima tutti quelli nella radice del sottoalbero,&lt;br /&gt;
poi tutti quelli al secondo livello), in ordine alfabetico fra quelli allo stesso livello.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import os, sys&lt;br /&gt;
&lt;br /&gt;
pathname = sys.argv[1]&lt;br /&gt;
&lt;br /&gt;
def tree (pathname):&lt;br /&gt;
	for path, dirs, files in os.walk(pathname):&lt;br /&gt;
		print dirs&lt;br /&gt;
		files.sort()&lt;br /&gt;
		level = path.replace(pathname, '').count(os.sep)&lt;br /&gt;
		indent = ' ' * 4 * (level)&lt;br /&gt;
		print('{}{}/'.format(indent, os.path.basename(path)))&lt;br /&gt;
		subindent = ' ' * 4 * (level + 1)&lt;br /&gt;
		for file in files:&lt;br /&gt;
			print('{}{}'.format(subindent, file))&lt;br /&gt;
&lt;br /&gt;
tree(pathname)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang =&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Esame 17 06 14&lt;br /&gt;
&lt;br /&gt;
Il comando che dovrete implementare come script shell o programma python e'  maxfreq.&lt;br /&gt;
Maxfreq ha come parametro un carattere alfanumerico e una directory.&lt;br /&gt;
Es:&lt;br /&gt;
maxfreq q  mydir&lt;br /&gt;
Cerca in tutto il sottoalbero del file system originato da mydir il file che ha la maggior frequenza della lettera indicata &lt;br /&gt;
(in questo caso la maggior frequenza di 'q'). Fornisce in output il nome del file e la frequenza in percentuale.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import os, sys&lt;br /&gt;
&lt;br /&gt;
pathname = sys.argv[2]&lt;br /&gt;
c = sys.argv[1]&lt;br /&gt;
&lt;br /&gt;
def maxfreq(c, pathname):&lt;br /&gt;
	maxi = 0&lt;br /&gt;
	for path, dirs, files in os.walk(pathname):&lt;br /&gt;
		for file in files:  &lt;br /&gt;
			if (file.count(c) &amp;gt; maxi):&lt;br /&gt;
				maxi = file.count(c)&lt;br /&gt;
				f = file&lt;br /&gt;
	print (&amp;quot;The file is {} with maxfreq {}&amp;quot;.format(f, maxi))&lt;br /&gt;
				&lt;br /&gt;
				&lt;br /&gt;
&lt;br /&gt;
maxfreq(c, pathname)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=996</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=996"/>
		<updated>2015-04-11T19:17:38Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questo &amp;amp;egrave; il Wiki del Corso di Sistemi Operativi&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica Esercizio 3 esami 17_07_12 - 17-06-14]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 23_01_14]]&lt;br /&gt;
&lt;br /&gt;
[[Ampiezza di tutti i file di una directory divisi per suffisso (Prova pratica 29-05-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Albero binario 2002-07-23]]&lt;br /&gt;
&lt;br /&gt;
[[50 Sfumature di Fibonacci]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 20/06/12]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 17/06/14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 17 07 14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.01.2015]]&lt;br /&gt;
&lt;br /&gt;
[[bash scripting 2002 gennaio]]&lt;br /&gt;
&lt;br /&gt;
[[Process Race (Prova pratica 18-07-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Arduino web controller]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.06.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova_pratica_21_01_15]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 17.06.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 - 25.09.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20/02/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Demone ruba input]]&lt;br /&gt;
&lt;br /&gt;
[[wifi daemon]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Problema Dei Filosofi]]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unibo.it/~renzo/so/portability.tgz portability.tgz]&lt;br /&gt;
&lt;br /&gt;
[[listx.h commentato + esempio su container_of]]&lt;br /&gt;
&lt;br /&gt;
[[Congettura di Goldbach]]&lt;br /&gt;
&lt;br /&gt;
[[list segments]]&lt;br /&gt;
&lt;br /&gt;
[[Execv/fork su file aperto]]&lt;br /&gt;
&lt;br /&gt;
[[Angry_Children]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 12/02/2009]]&lt;br /&gt;
&lt;br /&gt;
[[(Programma C) Un quadrato nella matrice]]&lt;br /&gt;
&lt;br /&gt;
[[&amp;quot;classi&amp;quot;_in_C]]&lt;br /&gt;
&lt;br /&gt;
[[Esempi del 02 dicembre 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Materiale dell'AA 2013-14]]&lt;br /&gt;
----&lt;br /&gt;
Ricordate che per creare un account o quando viene richiesto di risolvere un semplice calcolo occorre ricordare quanto scritto [[qui]]&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=995</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=995"/>
		<updated>2015-04-11T19:16:18Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questo &amp;amp;egrave; il Wiki del Corso di Sistemi Operativi&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 17_07_12]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 23_01_14]]&lt;br /&gt;
&lt;br /&gt;
[[Ampiezza di tutti i file di una directory divisi per suffisso (Prova pratica 29-05-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Albero binario 2002-07-23]]&lt;br /&gt;
&lt;br /&gt;
[[50 Sfumature di Fibonacci]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 20/06/12]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 17/06/14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 17 07 14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.01.2015]]&lt;br /&gt;
&lt;br /&gt;
[[bash scripting 2002 gennaio]]&lt;br /&gt;
&lt;br /&gt;
[[Process Race (Prova pratica 18-07-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Arduino web controller]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.06.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova_pratica_21_01_15]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 17.06.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 - 25.09.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20/02/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Demone ruba input]]&lt;br /&gt;
&lt;br /&gt;
[[wifi daemon]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Problema Dei Filosofi]]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unibo.it/~renzo/so/portability.tgz portability.tgz]&lt;br /&gt;
&lt;br /&gt;
[[listx.h commentato + esempio su container_of]]&lt;br /&gt;
&lt;br /&gt;
[[Congettura di Goldbach]]&lt;br /&gt;
&lt;br /&gt;
[[list segments]]&lt;br /&gt;
&lt;br /&gt;
[[Execv/fork su file aperto]]&lt;br /&gt;
&lt;br /&gt;
[[Angry_Children]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 12/02/2009]]&lt;br /&gt;
&lt;br /&gt;
[[(Programma C) Un quadrato nella matrice]]&lt;br /&gt;
&lt;br /&gt;
[[&amp;quot;classi&amp;quot;_in_C]]&lt;br /&gt;
&lt;br /&gt;
[[Esempi del 02 dicembre 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Materiale dell'AA 2013-14]]&lt;br /&gt;
----&lt;br /&gt;
Ricordate che per creare un account o quando viene richiesto di risolvere un semplice calcolo occorre ricordare quanto scritto [[qui]]&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=994</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=994"/>
		<updated>2015-04-11T19:15:54Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questo &amp;amp;egrave; il Wiki del Corso di Sistemi Operativi&lt;br /&gt;
&lt;br /&gt;
[[17_07_12]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 23_01_14]]&lt;br /&gt;
&lt;br /&gt;
[[Ampiezza di tutti i file di una directory divisi per suffisso (Prova pratica 29-05-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Albero binario 2002-07-23]]&lt;br /&gt;
&lt;br /&gt;
[[50 Sfumature di Fibonacci]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 20/06/12]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 17/06/14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 17 07 14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.01.2015]]&lt;br /&gt;
&lt;br /&gt;
[[bash scripting 2002 gennaio]]&lt;br /&gt;
&lt;br /&gt;
[[Process Race (Prova pratica 18-07-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Arduino web controller]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.06.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova_pratica_21_01_15]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 17.06.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 - 25.09.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20/02/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Demone ruba input]]&lt;br /&gt;
&lt;br /&gt;
[[wifi daemon]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Problema Dei Filosofi]]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unibo.it/~renzo/so/portability.tgz portability.tgz]&lt;br /&gt;
&lt;br /&gt;
[[listx.h commentato + esempio su container_of]]&lt;br /&gt;
&lt;br /&gt;
[[Congettura di Goldbach]]&lt;br /&gt;
&lt;br /&gt;
[[list segments]]&lt;br /&gt;
&lt;br /&gt;
[[Execv/fork su file aperto]]&lt;br /&gt;
&lt;br /&gt;
[[Angry_Children]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 12/02/2009]]&lt;br /&gt;
&lt;br /&gt;
[[(Programma C) Un quadrato nella matrice]]&lt;br /&gt;
&lt;br /&gt;
[[&amp;quot;classi&amp;quot;_in_C]]&lt;br /&gt;
&lt;br /&gt;
[[Esempi del 02 dicembre 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Materiale dell'AA 2013-14]]&lt;br /&gt;
----&lt;br /&gt;
Ricordate che per creare un account o quando viene richiesto di risolvere un semplice calcolo occorre ricordare quanto scritto [[qui]]&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=993</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=993"/>
		<updated>2015-04-11T19:15:27Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questo &amp;amp;egrave; il Wiki del Corso di Sistemi Operativi&lt;br /&gt;
&lt;br /&gt;
[[17_06_14]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 23_01_14]]&lt;br /&gt;
&lt;br /&gt;
[[Ampiezza di tutti i file di una directory divisi per suffisso (Prova pratica 29-05-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Albero binario 2002-07-23]]&lt;br /&gt;
&lt;br /&gt;
[[50 Sfumature di Fibonacci]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 20/06/12]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 17/06/14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 17 07 14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.01.2015]]&lt;br /&gt;
&lt;br /&gt;
[[bash scripting 2002 gennaio]]&lt;br /&gt;
&lt;br /&gt;
[[Process Race (Prova pratica 18-07-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Arduino web controller]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.06.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova_pratica_21_01_15]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 17.06.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 - 25.09.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20/02/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Demone ruba input]]&lt;br /&gt;
&lt;br /&gt;
[[wifi daemon]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Problema Dei Filosofi]]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unibo.it/~renzo/so/portability.tgz portability.tgz]&lt;br /&gt;
&lt;br /&gt;
[[listx.h commentato + esempio su container_of]]&lt;br /&gt;
&lt;br /&gt;
[[Congettura di Goldbach]]&lt;br /&gt;
&lt;br /&gt;
[[list segments]]&lt;br /&gt;
&lt;br /&gt;
[[Execv/fork su file aperto]]&lt;br /&gt;
&lt;br /&gt;
[[Angry_Children]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 12/02/2009]]&lt;br /&gt;
&lt;br /&gt;
[[(Programma C) Un quadrato nella matrice]]&lt;br /&gt;
&lt;br /&gt;
[[&amp;quot;classi&amp;quot;_in_C]]&lt;br /&gt;
&lt;br /&gt;
[[Esempi del 02 dicembre 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Materiale dell'AA 2013-14]]&lt;br /&gt;
----&lt;br /&gt;
Ricordate che per creare un account o quando viene richiesto di risolvere un semplice calcolo occorre ricordare quanto scritto [[qui]]&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=992</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=992"/>
		<updated>2015-04-11T19:14:57Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questo &amp;amp;egrave; il Wiki del Corso di Sistemi Operativi&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica Esercizio 3 esami 17_07_12 - 17_06_14]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 23_01_14]]&lt;br /&gt;
&lt;br /&gt;
[[Ampiezza di tutti i file di una directory divisi per suffisso (Prova pratica 29-05-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Albero binario 2002-07-23]]&lt;br /&gt;
&lt;br /&gt;
[[50 Sfumature di Fibonacci]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 20/06/12]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 17/06/14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 17 07 14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.01.2015]]&lt;br /&gt;
&lt;br /&gt;
[[bash scripting 2002 gennaio]]&lt;br /&gt;
&lt;br /&gt;
[[Process Race (Prova pratica 18-07-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Arduino web controller]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.06.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova_pratica_21_01_15]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 17.06.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 - 25.09.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20/02/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Demone ruba input]]&lt;br /&gt;
&lt;br /&gt;
[[wifi daemon]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Problema Dei Filosofi]]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unibo.it/~renzo/so/portability.tgz portability.tgz]&lt;br /&gt;
&lt;br /&gt;
[[listx.h commentato + esempio su container_of]]&lt;br /&gt;
&lt;br /&gt;
[[Congettura di Goldbach]]&lt;br /&gt;
&lt;br /&gt;
[[list segments]]&lt;br /&gt;
&lt;br /&gt;
[[Execv/fork su file aperto]]&lt;br /&gt;
&lt;br /&gt;
[[Angry_Children]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 12/02/2009]]&lt;br /&gt;
&lt;br /&gt;
[[(Programma C) Un quadrato nella matrice]]&lt;br /&gt;
&lt;br /&gt;
[[&amp;quot;classi&amp;quot;_in_C]]&lt;br /&gt;
&lt;br /&gt;
[[Esempi del 02 dicembre 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Materiale dell'AA 2013-14]]&lt;br /&gt;
----&lt;br /&gt;
Ricordate che per creare un account o quando viene richiesto di risolvere un semplice calcolo occorre ricordare quanto scritto [[qui]]&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Prova_pratica_17_07_12&amp;diff=991</id>
		<title>Prova pratica 17 07 12</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Prova_pratica_17_07_12&amp;diff=991"/>
		<updated>2015-04-11T19:14:09Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soluzione di Pierg==&lt;br /&gt;
&amp;lt;source lang =&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Lo script o il programma Python deve fornire una lista dei file all'interno di un sottoalbero ordinati &lt;br /&gt;
secondo il la “profondita'” nell'albero (prima tutti quelli nella radice del sottoalbero,&lt;br /&gt;
poi tutti quelli al secondo livello), in ordine alfabetico fra quelli allo stesso livello.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import os, sys&lt;br /&gt;
&lt;br /&gt;
pathname = sys.argv[1]&lt;br /&gt;
&lt;br /&gt;
def tree (pathname):&lt;br /&gt;
	for path, dirs, files in os.walk(pathname):&lt;br /&gt;
		print dirs&lt;br /&gt;
		files.sort()&lt;br /&gt;
		level = path.replace(pathname, '').count(os.sep)&lt;br /&gt;
		indent = ' ' * 4 * (level)&lt;br /&gt;
		print('{}{}/'.format(indent, os.path.basename(path)))&lt;br /&gt;
		subindent = ' ' * 4 * (level + 1)&lt;br /&gt;
		for file in files:&lt;br /&gt;
			print('{}{}'.format(subindent, file))&lt;br /&gt;
&lt;br /&gt;
tree(pathname)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang =&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Il comando che dovrete implementare come script shell o programma python e'  maxfreq.&lt;br /&gt;
Maxfreq ha come parametro un carattere alfanumerico e una directory.&lt;br /&gt;
Es:&lt;br /&gt;
maxfreq q  mydir&lt;br /&gt;
Cerca in tutto il sottoalbero del file system originato da mydir il file che ha la maggior frequenza della lettera indicata &lt;br /&gt;
(in questo caso la maggior frequenza di 'q'). Fornisce in output il nome del file e la frequenza in percentuale.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import os, sys&lt;br /&gt;
&lt;br /&gt;
pathname = sys.argv[2]&lt;br /&gt;
c = sys.argv[1]&lt;br /&gt;
&lt;br /&gt;
def maxfreq(c, pathname):&lt;br /&gt;
	maxi = 0&lt;br /&gt;
	for path, dirs, files in os.walk(pathname):&lt;br /&gt;
		for file in files:  &lt;br /&gt;
			if (file.count(c) &amp;gt; maxi):&lt;br /&gt;
				maxi = file.count(c)&lt;br /&gt;
				f = file&lt;br /&gt;
	print (&amp;quot;The file is {} with maxfreq {}&amp;quot;.format(f, maxi))&lt;br /&gt;
				&lt;br /&gt;
				&lt;br /&gt;
&lt;br /&gt;
maxfreq(c, pathname)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Prova_pratica_17_07_12&amp;diff=990</id>
		<title>Prova pratica 17 07 12</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Prova_pratica_17_07_12&amp;diff=990"/>
		<updated>2015-04-11T17:48:11Z</updated>

		<summary type="html">&lt;p&gt;Pierg: /* Soluzione di Pierg */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soluzione di Pierg==&lt;br /&gt;
&amp;lt;source lang =&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Lo script o il programma Python deve fornire una lista dei file all'interno di un sottoalbero ordinati &lt;br /&gt;
secondo il la “profondita'” nell'albero (prima tutti quelli nella radice del sottoalbero,&lt;br /&gt;
poi tutti quelli al secondo livello), in ordine alfabetico fra quelli allo stesso livello.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import os, sys&lt;br /&gt;
&lt;br /&gt;
pathname = sys.argv[1]&lt;br /&gt;
&lt;br /&gt;
def tree (pathname):&lt;br /&gt;
	for path, dirs, files in os.walk(pathname):&lt;br /&gt;
		print dirs&lt;br /&gt;
		files.sort()&lt;br /&gt;
		level = path.replace(pathname, '').count(os.sep)&lt;br /&gt;
		indent = ' ' * 4 * (level)&lt;br /&gt;
		print('{}{}/'.format(indent, os.path.basename(path)))&lt;br /&gt;
		subindent = ' ' * 4 * (level + 1)&lt;br /&gt;
		for file in files:&lt;br /&gt;
			print('{}{}'.format(subindent, file))&lt;br /&gt;
&lt;br /&gt;
tree(pathname)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=989</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=989"/>
		<updated>2015-04-11T17:47:56Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questo &amp;amp;egrave; il Wiki del Corso di Sistemi Operativi&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 17_07_12]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 23_01_14]]&lt;br /&gt;
&lt;br /&gt;
[[Ampiezza di tutti i file di una directory divisi per suffisso (Prova pratica 29-05-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Albero binario 2002-07-23]]&lt;br /&gt;
&lt;br /&gt;
[[50 Sfumature di Fibonacci]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 20/06/12]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 17/06/14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 17 07 14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.01.2015]]&lt;br /&gt;
&lt;br /&gt;
[[bash scripting 2002 gennaio]]&lt;br /&gt;
&lt;br /&gt;
[[Process Race (Prova pratica 18-07-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Arduino web controller]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.06.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova_pratica_21_01_15]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 17.06.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 - 25.09.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20/02/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Demone ruba input]]&lt;br /&gt;
&lt;br /&gt;
[[wifi daemon]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Problema Dei Filosofi]]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unibo.it/~renzo/so/portability.tgz portability.tgz]&lt;br /&gt;
&lt;br /&gt;
[[listx.h commentato + esempio su container_of]]&lt;br /&gt;
&lt;br /&gt;
[[Congettura di Goldbach]]&lt;br /&gt;
&lt;br /&gt;
[[list segments]]&lt;br /&gt;
&lt;br /&gt;
[[Execv/fork su file aperto]]&lt;br /&gt;
&lt;br /&gt;
[[Angry_Children]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 12/02/2009]]&lt;br /&gt;
&lt;br /&gt;
[[(Programma C) Un quadrato nella matrice]]&lt;br /&gt;
&lt;br /&gt;
[[&amp;quot;classi&amp;quot;_in_C]]&lt;br /&gt;
&lt;br /&gt;
[[Esempi del 02 dicembre 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Materiale dell'AA 2013-14]]&lt;br /&gt;
----&lt;br /&gt;
Ricordate che per creare un account o quando viene richiesto di risolvere un semplice calcolo occorre ricordare quanto scritto [[qui]]&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Prova_pratica_17_07_12&amp;diff=988</id>
		<title>Prova pratica 17 07 12</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Prova_pratica_17_07_12&amp;diff=988"/>
		<updated>2015-04-11T17:47:11Z</updated>

		<summary type="html">&lt;p&gt;Pierg: Created page with &amp;quot;==Soluzione di Pierg== &amp;lt;source lang =&amp;quot;text&amp;quot;&amp;gt; Lo script o il programma Python deve fornire una lista dei file all'interno di un sottoalbero ordinati  secondo il la “profondit...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Soluzione di Pierg==&lt;br /&gt;
&amp;lt;source lang =&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Lo script o il programma Python deve fornire una lista dei file all'interno di un sottoalbero ordinati &lt;br /&gt;
secondo il la “profondita'” nell'albero (prima tutti quelli nella radice del sottoalbero,&lt;br /&gt;
poi tutti quelli al secondo livello), in ordine alfabetico fra quelli allo stesso livello.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;py&amp;quot;&amp;gt;&lt;br /&gt;
import os, sys&lt;br /&gt;
&lt;br /&gt;
pathname = sys.argv[1]&lt;br /&gt;
&lt;br /&gt;
def tree (pathname):&lt;br /&gt;
	for path, dirs, files in os.walk(pathname):&lt;br /&gt;
		print dirs&lt;br /&gt;
		files.sort()&lt;br /&gt;
		level = path.replace(pathname, '').count(os.sep)&lt;br /&gt;
		indent = ' ' * 4 * (level)&lt;br /&gt;
		print('{}{}/'.format(indent, os.path.basename(path)))&lt;br /&gt;
		subindent = ' ' * 4 * (level + 1)&lt;br /&gt;
		for file in files:&lt;br /&gt;
			print('{}{}'.format(subindent, file))&lt;br /&gt;
&lt;br /&gt;
tree(pathname)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=987</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=987"/>
		<updated>2015-04-11T17:32:38Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questo &amp;amp;egrave; il Wiki del Corso di Sistemi Operativi&lt;br /&gt;
[[Prova pratica 17_07_12]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 23_01_14]]&lt;br /&gt;
&lt;br /&gt;
[[Ampiezza di tutti i file di una directory divisi per suffisso (Prova pratica 29-05-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Albero binario 2002-07-23]]&lt;br /&gt;
&lt;br /&gt;
[[50 Sfumature di Fibonacci]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 Prova Pratica 20/06/12]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3 Prova Pratica 17/06/14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 3, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova pratica 17 07 14]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.01.2015]]&lt;br /&gt;
&lt;br /&gt;
[[bash scripting 2002 gennaio]]&lt;br /&gt;
&lt;br /&gt;
[[Process Race (Prova pratica 18-07-2013)]]&lt;br /&gt;
&lt;br /&gt;
[[Arduino web controller]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.06.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova_pratica_21_01_15]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 17.06.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 - 25.09.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20/02/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Demone ruba input]]&lt;br /&gt;
&lt;br /&gt;
[[wifi daemon]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Problema Dei Filosofi]]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unibo.it/~renzo/so/portability.tgz portability.tgz]&lt;br /&gt;
&lt;br /&gt;
[[listx.h commentato + esempio su container_of]]&lt;br /&gt;
&lt;br /&gt;
[[Congettura di Goldbach]]&lt;br /&gt;
&lt;br /&gt;
[[list segments]]&lt;br /&gt;
&lt;br /&gt;
[[Execv/fork su file aperto]]&lt;br /&gt;
&lt;br /&gt;
[[Angry_Children]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 12/02/2009]]&lt;br /&gt;
&lt;br /&gt;
[[(Programma C) Un quadrato nella matrice]]&lt;br /&gt;
&lt;br /&gt;
[[&amp;quot;classi&amp;quot;_in_C]]&lt;br /&gt;
&lt;br /&gt;
[[Esempi del 02 dicembre 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Materiale dell'AA 2013-14]]&lt;br /&gt;
----&lt;br /&gt;
Ricordate che per creare un account o quando viene richiesto di risolvere un semplice calcolo occorre ricordare quanto scritto [[qui]]&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2014&amp;diff=938</id>
		<title>Esercizio 1, prova pratica 29.05.2014</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2014&amp;diff=938"/>
		<updated>2015-03-24T17:25:15Z</updated>

		<summary type="html">&lt;p&gt;Pierg: /* Soluzione di Pierg */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Scrivere un programma con un solo parametro.&lt;br /&gt;
Come prima cosa il programma deve creare una directory con il path specificato nel parametro. Se la directory esiste gia' o si&lt;br /&gt;
verifica un errore nella creazione, il programma deve terminare. Chiameremo questa directory “directory-base”&lt;br /&gt;
Il programma usando inotify rimane in attesa e stampa una riga di log per ogni file o directory creato o cancellato nella&lt;br /&gt;
directory-base. (solo nella directory-base, non nelle sottodirectory).&lt;br /&gt;
Quando viene cancellata la directory-base il programma termina. &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Soluzione di Pierg==&lt;br /&gt;
&amp;lt;source lang='c'&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/inotify.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define EVENT_SIZE  ( sizeof (struct inotify_event) )&lt;br /&gt;
#define EVENT_BUF_LEN     ( 1024 * ( EVENT_SIZE + 16 ) )&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv []) {&lt;br /&gt;
&lt;br /&gt;
	int stat, fd, wd, length, i = 0;&lt;br /&gt;
	char *directory_base = argv[1];	&lt;br /&gt;
	char buffer[EVENT_BUF_LEN];&lt;br /&gt;
	int boolean = 1;&lt;br /&gt;
&lt;br /&gt;
	/* Make the directory */&lt;br /&gt;
	stat = mkdir(argv[1], S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);&lt;br /&gt;
	&lt;br /&gt;
	/* Checking for error */&lt;br /&gt;
	if (stat != 0) {&lt;br /&gt;
		perror (&amp;quot;Error directory is not create&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/* Creating the INOTIFY instance */&lt;br /&gt;
  	fd = inotify_init();&lt;br /&gt;
&lt;br /&gt;
  	/* Checking for error */&lt;br /&gt;
  	if ( fd &amp;lt; 0 ) {&lt;br /&gt;
    		perror(&amp;quot;Error in inotify_init&amp;quot;);&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
  	/* Adding the directory into watch list. &lt;br /&gt;
           Here, the suggestion is to validate the existence of the directory before adding into monitoring list. */&lt;br /&gt;
  	wd = inotify_add_watch(fd, directory_base, IN_CREATE | IN_DELETE | IN_DELETE_SELF);&lt;br /&gt;
&lt;br /&gt;
	/* It continue until directory-base exist */&lt;br /&gt;
	while (boolean != 0) {&lt;br /&gt;
&lt;br /&gt;
	  	/* Read to determine the event change happens on the directory. &lt;br /&gt;
		   Actually this read blocks until the change event occurs. */ &lt;br /&gt;
		length = read(fd, buffer, EVENT_BUF_LEN); &lt;br /&gt;
&lt;br /&gt;
	  	/* Checking for error */&lt;br /&gt;
	  	if ( length &amp;lt; 0 ) {&lt;br /&gt;
	   		 perror(&amp;quot;Error in read&amp;quot;);&lt;br /&gt;
	  	}  &lt;br /&gt;
&lt;br /&gt;
	  	/* Actually read return the list of change events happens. &lt;br /&gt;
		   Here, read the change event one by one and process it accordingly. */&lt;br /&gt;
	  	while (i &amp;lt; length) {    &lt;br /&gt;
	 &lt;br /&gt;
			struct inotify_event *event = (struct inotify_event*) &amp;amp;buffer[i];   &lt;br /&gt;
	  &lt;br /&gt;
			if (event-&amp;gt;len) {&lt;br /&gt;
&lt;br /&gt;
				if (event-&amp;gt;mask &amp;amp; IN_CREATE) {&lt;br /&gt;
&lt;br /&gt;
		     			if (event-&amp;gt;mask &amp;amp; IN_ISDIR) {&lt;br /&gt;
			 			printf(&amp;quot;New directory %s created.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
		       			}&lt;br /&gt;
					else {&lt;br /&gt;
			  			printf(&amp;quot;New file %s created.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
					}&lt;br /&gt;
                                        break;&lt;br /&gt;
		      	        }&lt;br /&gt;
		      		else if (event-&amp;gt;mask &amp;amp; IN_DELETE) {&lt;br /&gt;
&lt;br /&gt;
					if (event-&amp;gt;mask &amp;amp; IN_ISDIR) {&lt;br /&gt;
			  			printf( &amp;quot;Directory %s deleted.\n&amp;quot;, event-&amp;gt;name );&lt;br /&gt;
					}&lt;br /&gt;
					else {&lt;br /&gt;
			  			printf(&amp;quot;File %s deleted.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
					}&lt;br /&gt;
                                        break;&lt;br /&gt;
		      		}&lt;br /&gt;
				/* Removing the directory */&lt;br /&gt;
				else if (event-&amp;gt;mask &amp;amp; IN_DELETE_SELF) {&lt;br /&gt;
                                        boolean = 0;&lt;br /&gt;
					printf( &amp;quot;Directory %s deleted.\n&amp;quot;, event-&amp;gt;name );&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
	    		}&lt;br /&gt;
	    		i += EVENT_SIZE + event-&amp;gt;len;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
	/* Removing the directory from the watch list */&lt;br /&gt;
   	inotify_rm_watch(fd, wd);&lt;br /&gt;
&lt;br /&gt;
  	/* Closing the INOTIFY instance */&lt;br /&gt;
   	close(fd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2014&amp;diff=937</id>
		<title>Esercizio 1, prova pratica 29.05.2014</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2014&amp;diff=937"/>
		<updated>2015-03-24T17:06:41Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Scrivere un programma con un solo parametro.&lt;br /&gt;
Come prima cosa il programma deve creare una directory con il path specificato nel parametro. Se la directory esiste gia' o si&lt;br /&gt;
verifica un errore nella creazione, il programma deve terminare. Chiameremo questa directory “directory-base”&lt;br /&gt;
Il programma usando inotify rimane in attesa e stampa una riga di log per ogni file o directory creato o cancellato nella&lt;br /&gt;
directory-base. (solo nella directory-base, non nelle sottodirectory).&lt;br /&gt;
Quando viene cancellata la directory-base il programma termina. &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Soluzione di Pierg==&lt;br /&gt;
&amp;lt;source lang='c'&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/inotify.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define EVENT_SIZE  ( sizeof (struct inotify_event) )&lt;br /&gt;
#define EVENT_BUF_LEN     ( 1024 * ( EVENT_SIZE + 16 ) )&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv []) {&lt;br /&gt;
&lt;br /&gt;
	int stat, fd, wd, length, i = 0;&lt;br /&gt;
	char *directory_base = argv[1];	&lt;br /&gt;
	char buffer[EVENT_BUF_LEN];&lt;br /&gt;
	int boolean = 1;&lt;br /&gt;
&lt;br /&gt;
	/* Make the directory */&lt;br /&gt;
	stat = mkdir(argv[1], S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);&lt;br /&gt;
	&lt;br /&gt;
	/* Checking for error */&lt;br /&gt;
	if (stat != 0) {&lt;br /&gt;
		perror (&amp;quot;Error directory is not create&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/* Creating the INOTIFY instance */&lt;br /&gt;
  	fd = inotify_init();&lt;br /&gt;
&lt;br /&gt;
  	/* Checking for error */&lt;br /&gt;
  	if ( fd &amp;lt; 0 ) {&lt;br /&gt;
    		perror(&amp;quot;Error in inotify_init&amp;quot;);&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
  	/* Adding the directory into watch list. &lt;br /&gt;
           Here, the suggestion is to validate the existence of the directory before adding into monitoring list. */&lt;br /&gt;
  	wd = inotify_add_watch(fd, directory_base, IN_CREATE | IN_DELETE | IN_DELETE_SELF);&lt;br /&gt;
&lt;br /&gt;
	/* It continue until directory-base exist */&lt;br /&gt;
	while (boolean != 0) {&lt;br /&gt;
&lt;br /&gt;
	  	/* Read to determine the event change happens on the directory. &lt;br /&gt;
		   Actually this read blocks until the change event occurs. */ &lt;br /&gt;
		length = read(fd, buffer, EVENT_BUF_LEN); &lt;br /&gt;
&lt;br /&gt;
	  	/* Checking for error */&lt;br /&gt;
	  	if ( length &amp;lt; 0 ) {&lt;br /&gt;
	   		 perror(&amp;quot;Error in read&amp;quot;);&lt;br /&gt;
	  	}  &lt;br /&gt;
&lt;br /&gt;
	  	/* Actually read return the list of change events happens. &lt;br /&gt;
		   Here, read the change event one by one and process it accordingly. */&lt;br /&gt;
	  	while (i &amp;lt; length) {    &lt;br /&gt;
	 &lt;br /&gt;
			struct inotify_event *event = (struct inotify_event*) &amp;amp;buffer[i];   &lt;br /&gt;
	  &lt;br /&gt;
			if (event-&amp;gt;len) {&lt;br /&gt;
&lt;br /&gt;
				if (event-&amp;gt;mask &amp;amp; IN_CREATE) {&lt;br /&gt;
&lt;br /&gt;
		     			if (event-&amp;gt;mask &amp;amp; IN_ISDIR) {&lt;br /&gt;
			 			printf(&amp;quot;New directory %s created.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
		       			}&lt;br /&gt;
					else {&lt;br /&gt;
			  			printf(&amp;quot;New file %s created.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
					}&lt;br /&gt;
		      	        }&lt;br /&gt;
		      		else if (event-&amp;gt;mask &amp;amp; IN_DELETE) {&lt;br /&gt;
&lt;br /&gt;
					if (event-&amp;gt;mask &amp;amp; IN_ISDIR) {&lt;br /&gt;
			  			printf( &amp;quot;Directory %s deleted.\n&amp;quot;, event-&amp;gt;name );&lt;br /&gt;
					}&lt;br /&gt;
					else {&lt;br /&gt;
			  			printf(&amp;quot;File %s deleted.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
					}&lt;br /&gt;
		      		}&lt;br /&gt;
				/* Removing the directory */&lt;br /&gt;
				else if (event-&amp;gt;mask &amp;amp; IN_DELETE_SELF) {&lt;br /&gt;
                                        boolean = 0;&lt;br /&gt;
					printf( &amp;quot;Directory %s deleted.\n&amp;quot;, event-&amp;gt;name );&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
	    		}&lt;br /&gt;
	    		i += EVENT_SIZE + event-&amp;gt;len;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
	/* Removing the directory from the watch list */&lt;br /&gt;
   	inotify_rm_watch(fd, wd);&lt;br /&gt;
&lt;br /&gt;
  	/* Closing the INOTIFY instance */&lt;br /&gt;
   	close(fd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2014&amp;diff=936</id>
		<title>Esercizio 1, prova pratica 29.05.2014</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2014&amp;diff=936"/>
		<updated>2015-03-24T17:06:16Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Scrivere un programma con un solo parametro.&lt;br /&gt;
Come prima cosa il programma deve creare una directory con il path specificato nel parametro. Se la directory esiste gia' o si&lt;br /&gt;
verifica un errore nella creazione, il programma deve terminare. Chiameremo questa directory “directory-base”&lt;br /&gt;
Il programma usando inotify rimane in attesa e stampa una riga di log per ogni file o directory creato o cancellato nella&lt;br /&gt;
directory-base. (solo nella directory-base, non nelle sottodirectory).&lt;br /&gt;
Quando viene cancellata la directory-base il programma termina. &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Soluzione di Pierg==&lt;br /&gt;
&amp;lt;source lang='c'&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/inotify.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define EVENT_SIZE  ( sizeof (struct inotify_event) )&lt;br /&gt;
#define EVENT_BUF_LEN     ( 1024 * ( EVENT_SIZE + 16 ) )&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv []) {&lt;br /&gt;
&lt;br /&gt;
	int stat, fd, wd, length, i = 0;&lt;br /&gt;
	char *directory_base = argv[1];	&lt;br /&gt;
	char buffer[EVENT_BUF_LEN];&lt;br /&gt;
	int boolean = 1;&lt;br /&gt;
&lt;br /&gt;
	/* Make the directory */&lt;br /&gt;
	stat = mkdir(argv[1], S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);&lt;br /&gt;
	&lt;br /&gt;
	/* Checking for error */&lt;br /&gt;
	if (stat != 0) {&lt;br /&gt;
		perror (&amp;quot;Error directory is not create&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/* Creating the INOTIFY instance */&lt;br /&gt;
  	fd = inotify_init();&lt;br /&gt;
&lt;br /&gt;
  	/* Checking for error */&lt;br /&gt;
  	if ( fd &amp;lt; 0 ) {&lt;br /&gt;
    		perror(&amp;quot;Error in inotify_init&amp;quot;);&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
  	/* Adding the directory into watch list. &lt;br /&gt;
           Here, the suggestion is to validate the existence of the directory before adding into monitoring list. */&lt;br /&gt;
  	wd = inotify_add_watch(fd, directory_base, IN_CREATE | IN_DELETE | IN_DELETE_SELF);&lt;br /&gt;
&lt;br /&gt;
	/* It continue until directory-base exist */&lt;br /&gt;
	while (boolean != 0) {&lt;br /&gt;
&lt;br /&gt;
	  	/* Read to determine the event change happens on the directory. &lt;br /&gt;
		   Actually this read blocks until the change event occurs. */ &lt;br /&gt;
		length = read(fd, buffer, EVENT_BUF_LEN); &lt;br /&gt;
&lt;br /&gt;
	  	/* Checking for error */&lt;br /&gt;
	  	if ( length &amp;lt; 0 ) {&lt;br /&gt;
	   		 perror(&amp;quot;Error in read&amp;quot;);&lt;br /&gt;
	  	}  &lt;br /&gt;
&lt;br /&gt;
	  	/* Actually read return the list of change events happens. &lt;br /&gt;
		   Here, read the change event one by one and process it accordingly. */&lt;br /&gt;
	  	while (i &amp;lt; length) {    &lt;br /&gt;
	 &lt;br /&gt;
			struct inotify_event *event = (struct inotify_event*) &amp;amp;buffer[i];   &lt;br /&gt;
	  &lt;br /&gt;
			if (event-&amp;gt;len) {&lt;br /&gt;
&lt;br /&gt;
				if (event-&amp;gt;mask &amp;amp; IN_CREATE) {&lt;br /&gt;
&lt;br /&gt;
		     			if (event-&amp;gt;mask &amp;amp; IN_ISDIR) {&lt;br /&gt;
			 			printf(&amp;quot;New directory %s created.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
		       			}&lt;br /&gt;
					else {&lt;br /&gt;
			  			printf(&amp;quot;New file %s created.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
					}&lt;br /&gt;
		      	        }&lt;br /&gt;
		      		else if (event-&amp;gt;mask &amp;amp; IN_DELETE) {&lt;br /&gt;
&lt;br /&gt;
					if (event-&amp;gt;mask &amp;amp; IN_ISDIR) {&lt;br /&gt;
			  			printf( &amp;quot;Directory %s deleted.\n&amp;quot;, event-&amp;gt;name );&lt;br /&gt;
					}&lt;br /&gt;
					else {&lt;br /&gt;
			  			printf(&amp;quot;File %s deleted.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
					}&lt;br /&gt;
		      		}&lt;br /&gt;
				/* Removing the directory */&lt;br /&gt;
				else if (event-&amp;gt;mask &amp;amp; IN_DELETE_SELF) {&lt;br /&gt;
                                        boolean = 0;&lt;br /&gt;
					printf( &amp;quot;Directory %s deleted.\n&amp;quot;, event-&amp;gt;name );&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
	    		}&lt;br /&gt;
	    		i += EVENT_SIZE + event-&amp;gt;len;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
	/* Removing the directory from the watch list */&lt;br /&gt;
   	inotify_rm_watch(fd, wd);&lt;br /&gt;
&lt;br /&gt;
  	/* Closing the INOTIFY instance */&lt;br /&gt;
   	close(fd);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2014&amp;diff=935</id>
		<title>Esercizio 1, prova pratica 29.05.2014</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2014&amp;diff=935"/>
		<updated>2015-03-24T17:05:56Z</updated>

		<summary type="html">&lt;p&gt;Pierg: /* Soluzione di Pierg */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Scrivere un programma con un solo parametro.&lt;br /&gt;
Come prima cosa il programma deve creare una directory con il path specificato nel parametro. Se la directory esiste gia' o si&lt;br /&gt;
verifica un errore nella creazione, il programma deve terminare. Chiameremo questa directory “directory-base”&lt;br /&gt;
Il programma usando inotify rimane in attesa e stampa una riga di log per ogni file o directory creato o cancellato nella&lt;br /&gt;
directory-base. (solo nella directory-base, non nelle sottodirectory).&lt;br /&gt;
Quando viene cancellata la directory-base il programma termina. &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Soluzione di Pierg==&lt;br /&gt;
&amp;lt;source lang='c'&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/inotify.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define EVENT_SIZE  ( sizeof (struct inotify_event) )&lt;br /&gt;
#define EVENT_BUF_LEN     ( 1024 * ( EVENT_SIZE + 16 ) )&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv []) {&lt;br /&gt;
&lt;br /&gt;
	int stat, fd, wd, length, i = 0;&lt;br /&gt;
	char *directory_base = argv[1];	&lt;br /&gt;
	char buffer[EVENT_BUF_LEN];&lt;br /&gt;
	int boolean = 1;&lt;br /&gt;
&lt;br /&gt;
	/* Make the directory */&lt;br /&gt;
	stat = mkdir(argv[1], S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);&lt;br /&gt;
	&lt;br /&gt;
	/* Checking for error */&lt;br /&gt;
	if (stat != 0) {&lt;br /&gt;
		perror (&amp;quot;Error directory is not create&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/* Creating the INOTIFY instance */&lt;br /&gt;
  	fd = inotify_init();&lt;br /&gt;
&lt;br /&gt;
  	/* Checking for error */&lt;br /&gt;
  	if ( fd &amp;lt; 0 ) {&lt;br /&gt;
    		perror(&amp;quot;Error in inotify_init&amp;quot;);&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
  	/* Adding the directory into watch list. &lt;br /&gt;
           Here, the suggestion is to validate the existence of the directory before adding into monitoring list. */&lt;br /&gt;
  	wd = inotify_add_watch(fd, directory_base, IN_CREATE | IN_DELETE | IN_DELETE_SELF);&lt;br /&gt;
&lt;br /&gt;
	/* It continue until directory-base exist */&lt;br /&gt;
	while (boolean != 0) {&lt;br /&gt;
&lt;br /&gt;
	  	/* Read to determine the event change happens on the directory. &lt;br /&gt;
		   Actually this read blocks until the change event occurs. */ &lt;br /&gt;
		length = read(fd, buffer, EVENT_BUF_LEN); &lt;br /&gt;
&lt;br /&gt;
	  	/* Checking for error */&lt;br /&gt;
	  	if ( length &amp;lt; 0 ) {&lt;br /&gt;
	   		 perror(&amp;quot;Error in read&amp;quot;);&lt;br /&gt;
	  	}  &lt;br /&gt;
&lt;br /&gt;
	  	/* Actually read return the list of change events happens. &lt;br /&gt;
		   Here, read the change event one by one and process it accordingly. */&lt;br /&gt;
	  	while (i &amp;lt; length) {    &lt;br /&gt;
	 &lt;br /&gt;
			struct inotify_event *event = (struct inotify_event*) &amp;amp;buffer[i];   &lt;br /&gt;
	  &lt;br /&gt;
			if (event-&amp;gt;len) {&lt;br /&gt;
&lt;br /&gt;
				if (event-&amp;gt;mask &amp;amp; IN_CREATE) {&lt;br /&gt;
&lt;br /&gt;
		     			if (event-&amp;gt;mask &amp;amp; IN_ISDIR) {&lt;br /&gt;
			 			printf(&amp;quot;New directory %s created.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
		       			}&lt;br /&gt;
					else {&lt;br /&gt;
			  			printf(&amp;quot;New file %s created.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
					}&lt;br /&gt;
		      	        }&lt;br /&gt;
		      		else if (event-&amp;gt;mask &amp;amp; IN_DELETE) {&lt;br /&gt;
&lt;br /&gt;
					if (event-&amp;gt;mask &amp;amp; IN_ISDIR) {&lt;br /&gt;
			  			printf( &amp;quot;Directory %s deleted.\n&amp;quot;, event-&amp;gt;name );&lt;br /&gt;
					}&lt;br /&gt;
					else {&lt;br /&gt;
			  			printf(&amp;quot;File %s deleted.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
					}&lt;br /&gt;
		      		}&lt;br /&gt;
				/* Removing the directory */&lt;br /&gt;
				else if (event-&amp;gt;mask &amp;amp; IN_DELETE_SELF) {&lt;br /&gt;
                                        boolean = 0;&lt;br /&gt;
					printf( &amp;quot;Directory %s deleted.\n&amp;quot;, event-&amp;gt;name );&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
	    		}&lt;br /&gt;
	    		i += EVENT_SIZE + event-&amp;gt;len;&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
	/* Removing the directory from the watch list */&lt;br /&gt;
   	inotify_rm_watch(fd, wd);&lt;br /&gt;
&lt;br /&gt;
  	/* Closing the INOTIFY instance */&lt;br /&gt;
   	close(fd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Non capisco perche' ,anche inserendo il while prima della read ,non riesco a notificare eventi uno dopo l'altro nello stesso ciclo.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=934</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=934"/>
		<updated>2015-03-24T17:05:18Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questo &amp;amp;egrave; il Wiki del Corso di Sistemi Operativi&lt;br /&gt;
&lt;br /&gt;
[[Arduino web controller]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.06.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova_pratica_21_01_15]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 17.06.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 - 25.09.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20/02/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Demone ruba input]]&lt;br /&gt;
&lt;br /&gt;
[[wifi daemon]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Problema Dei Filosofi]]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unibo.it/~renzo/so/portability.tgz portability.tgz]&lt;br /&gt;
&lt;br /&gt;
[[listx.h commentato + esempio su container_of]]&lt;br /&gt;
&lt;br /&gt;
[[Congettura di Goldbach]]&lt;br /&gt;
&lt;br /&gt;
[[list segments]]&lt;br /&gt;
&lt;br /&gt;
[[Execv/fork su file aperto]]&lt;br /&gt;
&lt;br /&gt;
[[Angry_Children]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 12/02/2009]]&lt;br /&gt;
&lt;br /&gt;
[[(Programma C) Un quadrato nella matrice]]&lt;br /&gt;
&lt;br /&gt;
[[&amp;quot;classi&amp;quot;_in_C]]&lt;br /&gt;
&lt;br /&gt;
[[Esempi del 02 dicembre 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Materiale dell'AA 2013-14]]&lt;br /&gt;
----&lt;br /&gt;
Ricordate che per creare un account o quando viene richiesto di risolvere un semplice calcolo occorre ricordare quanto scritto [[qui]]&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=933</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=933"/>
		<updated>2015-03-24T17:02:11Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questo &amp;amp;egrave; il Wiki del Corso di Sistemi Operativi&lt;br /&gt;
&lt;br /&gt;
[[Arduino web controller]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 25.05.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.06.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova_pratica_21_01_15]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 17.06.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 - 25.09.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20/02/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Demone ruba input]]&lt;br /&gt;
&lt;br /&gt;
[[wifi daemon]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Problema Dei Filosofi]]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unibo.it/~renzo/so/portability.tgz portability.tgz]&lt;br /&gt;
&lt;br /&gt;
[[listx.h commentato + esempio su container_of]]&lt;br /&gt;
&lt;br /&gt;
[[Congettura di Goldbach]]&lt;br /&gt;
&lt;br /&gt;
[[list segments]]&lt;br /&gt;
&lt;br /&gt;
[[Execv/fork su file aperto]]&lt;br /&gt;
&lt;br /&gt;
[[Angry_Children]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 12/02/2009]]&lt;br /&gt;
&lt;br /&gt;
[[(Programma C) Un quadrato nella matrice]]&lt;br /&gt;
&lt;br /&gt;
[[&amp;quot;classi&amp;quot;_in_C]]&lt;br /&gt;
&lt;br /&gt;
[[Esempi del 02 dicembre 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Materiale dell'AA 2013-14]]&lt;br /&gt;
----&lt;br /&gt;
Ricordate che per creare un account o quando viene richiesto di risolvere un semplice calcolo occorre ricordare quanto scritto [[qui]]&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2013&amp;diff=922</id>
		<title>Esercizio 1, prova pratica 29.05.2013</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2013&amp;diff=922"/>
		<updated>2015-03-23T19:45:17Z</updated>

		<summary type="html">&lt;p&gt;Pierg: /* Soluzione di Pierg */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Scrivere un programma testeventfd che faccia uso della system call eventfd.&lt;br /&gt;
In particolare il programma deve eseguire una fork, quando l'utente digita un numero letto dal processo padre, il processo&lt;br /&gt;
figlio deve stampare un numero uguale di x.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Soluzione di Pierg==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/eventfd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt; &lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv[]) {&lt;br /&gt;
	&lt;br /&gt;
	int efd, i; &lt;br /&gt;
	long long unsigned int val;&lt;br /&gt;
    	ssize_t s;&lt;br /&gt;
	&lt;br /&gt;
	/* Check for eventfd error */&lt;br /&gt;
	efd = eventfd(0, 0);&lt;br /&gt;
	if (efd == -1) {&lt;br /&gt;
		perror(&amp;quot;Eventfd Error&amp;quot;); &lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Use fork to move eventfd form parent to child */&lt;br /&gt;
	switch (fork()) {&lt;br /&gt;
		&lt;br /&gt;
		case 0:&lt;br /&gt;
			/* Read parent event */&lt;br /&gt;
			s = read(efd, &amp;amp;val, sizeof(long long unsigned int));&lt;br /&gt;
&lt;br /&gt;
            		if (s != sizeof(long long unsigned int)) {&lt;br /&gt;
                		perror(&amp;quot;Read Error&amp;quot;);&lt;br /&gt;
				exit(EXIT_FAILURE);&lt;br /&gt;
        		}&lt;br /&gt;
&lt;br /&gt;
			/* For is used to print the 'x' of the argument passed by terminal */&lt;br /&gt;
			for (i = (int)val; i &amp;gt; 0; i--) {&lt;br /&gt;
				printf (&amp;quot;x\n&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			exit(EXIT_SUCCESS);&lt;br /&gt;
		&lt;br /&gt;
		/* Check for error */&lt;br /&gt;
		case -1:&lt;br /&gt;
			perror(&amp;quot;Fork Error&amp;quot;); &lt;br /&gt;
			exit(EXIT_FAILURE);&lt;br /&gt;
&lt;br /&gt;
		default:&lt;br /&gt;
			/* Wait for number */&lt;br /&gt;
			printf (&amp;quot;Inserisci un intero diverso da 0: \n&amp;quot;);&lt;br /&gt;
			scanf (&amp;quot;%llu&amp;quot;, &amp;amp;val);&lt;br /&gt;
&lt;br /&gt;
			/* Write parent event */&lt;br /&gt;
           		s = write(efd, &amp;amp;val, sizeof(long long unsigned int));&lt;br /&gt;
&lt;br /&gt;
            		if (s != sizeof(long long unsigned int)) {&lt;br /&gt;
                		perror(&amp;quot;Write Error&amp;quot;);&lt;br /&gt;
				exit(EXIT_FAILURE);&lt;br /&gt;
        		}&lt;br /&gt;
	&lt;br /&gt;
			exit(EXIT_SUCCESS);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2014&amp;diff=921</id>
		<title>Esercizio 1, prova pratica 29.05.2014</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2014&amp;diff=921"/>
		<updated>2015-03-23T18:16:24Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Scrivere un programma con un solo parametro.&lt;br /&gt;
Come prima cosa il programma deve creare una directory con il path specificato nel parametro. Se la directory esiste gia' o si&lt;br /&gt;
verifica un errore nella creazione, il programma deve terminare. Chiameremo questa directory “directory-base”&lt;br /&gt;
Il programma usando inotify rimane in attesa e stampa una riga di log per ogni file o directory creato o cancellato nella&lt;br /&gt;
directory-base. (solo nella directory-base, non nelle sottodirectory).&lt;br /&gt;
Quando viene cancellata la directory-base il programma termina. &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Soluzione di Pierg==&lt;br /&gt;
&amp;lt;source lang='c'&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/inotify.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define EVENT_SIZE  ( sizeof (struct inotify_event) )&lt;br /&gt;
#define EVENT_BUF_LEN     ( 1024 * ( EVENT_SIZE + 16 ) )&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv []) {&lt;br /&gt;
&lt;br /&gt;
	int stat, fd, wd, length, i = 0;&lt;br /&gt;
	char *directory_base = argv[1];	&lt;br /&gt;
	char buffer[EVENT_BUF_LEN];&lt;br /&gt;
	int boolean = 1;&lt;br /&gt;
&lt;br /&gt;
	/* Make the directory */&lt;br /&gt;
	stat = mkdir(argv[1], S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);&lt;br /&gt;
	&lt;br /&gt;
	/* Checking for error */&lt;br /&gt;
	if (stat != 0) {&lt;br /&gt;
		perror (&amp;quot;Error directory is not create&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/* Creating the INOTIFY instance */&lt;br /&gt;
  	fd = inotify_init();&lt;br /&gt;
&lt;br /&gt;
  	/* Checking for error */&lt;br /&gt;
  	if ( fd &amp;lt; 0 ) {&lt;br /&gt;
    		perror(&amp;quot;Error in inotify_init&amp;quot;);&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
  	/* Adding the directory into watch list. &lt;br /&gt;
           Here, the suggestion is to validate the existence of the directory before adding into monitoring list. */&lt;br /&gt;
  	wd = inotify_add_watch(fd, directory_base, IN_CREATE | IN_DELETE | IN_DELETE_SELF);&lt;br /&gt;
&lt;br /&gt;
	/* It continue until directory-base exist */&lt;br /&gt;
	while (boolean != 0) {&lt;br /&gt;
&lt;br /&gt;
	  	/* Read to determine the event change happens on the directory. &lt;br /&gt;
		   Actually this read blocks until the change event occurs. */ &lt;br /&gt;
		length = read(fd, buffer, EVENT_BUF_LEN); &lt;br /&gt;
&lt;br /&gt;
	  	/* Checking for error */&lt;br /&gt;
	  	if ( length &amp;lt; 0 ) {&lt;br /&gt;
	   		 perror(&amp;quot;Error in read&amp;quot;);&lt;br /&gt;
	  	}  &lt;br /&gt;
&lt;br /&gt;
	  	/* Actually read return the list of change events happens. &lt;br /&gt;
		   Here, read the change event one by one and process it accordingly. */&lt;br /&gt;
	  	while (i &amp;lt; length) {    &lt;br /&gt;
	 &lt;br /&gt;
			struct inotify_event *event = (struct inotify_event*) &amp;amp;buffer[i];   &lt;br /&gt;
	  &lt;br /&gt;
			if (event-&amp;gt;len) {&lt;br /&gt;
&lt;br /&gt;
				if (event-&amp;gt;mask &amp;amp; IN_CREATE) {&lt;br /&gt;
&lt;br /&gt;
		     			if (event-&amp;gt;mask &amp;amp; IN_ISDIR) {&lt;br /&gt;
			 			printf(&amp;quot;New directory %s created.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
		       			}&lt;br /&gt;
					else {&lt;br /&gt;
			  			printf(&amp;quot;New file %s created.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
					}&lt;br /&gt;
		      	        }&lt;br /&gt;
		      		else if (event-&amp;gt;mask &amp;amp; IN_DELETE) {&lt;br /&gt;
&lt;br /&gt;
					if (event-&amp;gt;mask &amp;amp; IN_ISDIR) {&lt;br /&gt;
			  			printf( &amp;quot;Directory %s deleted.\n&amp;quot;, event-&amp;gt;name );&lt;br /&gt;
					}&lt;br /&gt;
					else {&lt;br /&gt;
			  			printf(&amp;quot;File %s deleted.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
					}&lt;br /&gt;
		      		}&lt;br /&gt;
				/* Removing the directory */&lt;br /&gt;
				else if (event-&amp;gt;mask &amp;amp; IN_DELETE_SELF) {&lt;br /&gt;
					printf( &amp;quot;Directory %s deleted.\n&amp;quot;, event-&amp;gt;name );&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
	    		}&lt;br /&gt;
	    		i += EVENT_SIZE + event-&amp;gt;len;&lt;br /&gt;
		}	&lt;br /&gt;
		boolean = 0;&lt;br /&gt;
	}&lt;br /&gt;
	/* Removing the directory from the watch list */&lt;br /&gt;
   	inotify_rm_watch(fd, wd);&lt;br /&gt;
&lt;br /&gt;
  	/* Closing the INOTIFY instance */&lt;br /&gt;
   	close(fd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Non capisco perche' ,anche inserendo il while prima della read ,non riesco a notificare eventi uno dopo l'altro nello stesso ciclo.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2014&amp;diff=920</id>
		<title>Esercizio 1, prova pratica 29.05.2014</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2014&amp;diff=920"/>
		<updated>2015-03-23T18:16:02Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Scrivere un programma con un solo parametro.&lt;br /&gt;
Come prima cosa il programma deve creare una directory con il path specificato nel parametro. Se la directory esiste gia' o si&lt;br /&gt;
verifica un errore nella creazione, il programma deve terminare. Chiameremo questa directory “directory-base”&lt;br /&gt;
Il programma usando inotify rimane in attesa e stampa una riga di log per ogni file o directory creato o cancellato nella&lt;br /&gt;
directory-base. (solo nella directory-base, non nelle sottodirectory).&lt;br /&gt;
Quando viene cancellata la directory-base il programma termina. &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Soluzione di Pierg==&lt;br /&gt;
&amp;lt;source lang='c'&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/inotify.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define EVENT_SIZE  ( sizeof (struct inotify_event) )&lt;br /&gt;
#define EVENT_BUF_LEN     ( 1024 * ( EVENT_SIZE + 16 ) )&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv []) {&lt;br /&gt;
&lt;br /&gt;
	int stat, fd, wd, length, i = 0;&lt;br /&gt;
	char *directory_base = argv[1];	&lt;br /&gt;
	char buffer[EVENT_BUF_LEN];&lt;br /&gt;
	int boolean = 1;&lt;br /&gt;
&lt;br /&gt;
	/* Make the directory */&lt;br /&gt;
	stat = mkdir(argv[1], S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);&lt;br /&gt;
	&lt;br /&gt;
	/* Checking for error */&lt;br /&gt;
	if (stat != 0) {&lt;br /&gt;
		perror (&amp;quot;Error directory is not create&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/* Creating the INOTIFY instance */&lt;br /&gt;
  	fd = inotify_init();&lt;br /&gt;
&lt;br /&gt;
  	/* Checking for error */&lt;br /&gt;
  	if ( fd &amp;lt; 0 ) {&lt;br /&gt;
    		perror(&amp;quot;Error in inotify_init&amp;quot;);&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
  	/* Adding the directory into watch list. &lt;br /&gt;
           Here, the suggestion is to validate the existence of the directory before adding into monitoring list. */&lt;br /&gt;
  	wd = inotify_add_watch(fd, directory_base, IN_CREATE | IN_DELETE | IN_DELETE_SELF);&lt;br /&gt;
&lt;br /&gt;
	/* It continue until directory-base exist */&lt;br /&gt;
	while (boolean != 0) {&lt;br /&gt;
&lt;br /&gt;
	  	/* Read to determine the event change happens on the directory. &lt;br /&gt;
		   Actually this read blocks until the change event occurs. */ &lt;br /&gt;
		length = read(fd, buffer, EVENT_BUF_LEN); &lt;br /&gt;
&lt;br /&gt;
	  	/* Checking for error */&lt;br /&gt;
	  	if ( length &amp;lt; 0 ) {&lt;br /&gt;
	   		 perror(&amp;quot;Error in read&amp;quot;);&lt;br /&gt;
	  	}  &lt;br /&gt;
&lt;br /&gt;
	  	/* Actually read return the list of change events happens. &lt;br /&gt;
		   Here, read the change event one by one and process it accordingly. */&lt;br /&gt;
	  	while (i &amp;lt; length) {    &lt;br /&gt;
	 &lt;br /&gt;
			struct inotify_event *event = (struct inotify_event*) &amp;amp;buffer[i];   &lt;br /&gt;
	  &lt;br /&gt;
			if (event-&amp;gt;len) {&lt;br /&gt;
&lt;br /&gt;
				if (event-&amp;gt;mask &amp;amp; IN_CREATE) {&lt;br /&gt;
&lt;br /&gt;
		     			if (event-&amp;gt;mask &amp;amp; IN_ISDIR) {&lt;br /&gt;
			 			printf(&amp;quot;New directory %s created.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
		       			}&lt;br /&gt;
					else {&lt;br /&gt;
			  			printf(&amp;quot;New file %s created.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
					}&lt;br /&gt;
		      	        }&lt;br /&gt;
		      		else if (event-&amp;gt;mask &amp;amp; IN_DELETE) {&lt;br /&gt;
&lt;br /&gt;
					if (event-&amp;gt;mask &amp;amp; IN_ISDIR) {&lt;br /&gt;
			  			printf( &amp;quot;Directory %s deleted.\n&amp;quot;, event-&amp;gt;name );&lt;br /&gt;
					}&lt;br /&gt;
					else {&lt;br /&gt;
			  			printf(&amp;quot;File %s deleted.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
					}&lt;br /&gt;
		      		}&lt;br /&gt;
				/* Removing the directory */&lt;br /&gt;
				else if (event-&amp;gt;mask &amp;amp; IN_DELETE_SELF) {&lt;br /&gt;
					printf( &amp;quot;Directory %s deleted.\n&amp;quot;, event-&amp;gt;name );&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
	    		}&lt;br /&gt;
	    		i += EVENT_SIZE + event-&amp;gt;len;&lt;br /&gt;
		}	&lt;br /&gt;
		boolean = 0;&lt;br /&gt;
	}&lt;br /&gt;
	/* Removing the directory from the watch list */&lt;br /&gt;
   	inotify_rm_watch(fd, wd);&lt;br /&gt;
&lt;br /&gt;
  	/* Closing the INOTIFY instance */&lt;br /&gt;
   	close(fd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Non capisco perche' ,anche inserendo i while prima della read ,non riesco a notificare eventi uno dopo l'altro nello stesso ciclo.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2014&amp;diff=919</id>
		<title>Esercizio 1, prova pratica 29.05.2014</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2014&amp;diff=919"/>
		<updated>2015-03-23T18:13:35Z</updated>

		<summary type="html">&lt;p&gt;Pierg: /* Soluzione di Pierg */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Scrivere un programma con un solo parametro.&lt;br /&gt;
Come prima cosa il programma deve creare una directory con il path specificato nel parametro. Se la directory esiste gia' o si&lt;br /&gt;
verifica un errore nella creazione, il programma deve terminare. Chiameremo questa directory “directory-base”&lt;br /&gt;
Il programma usando inotify rimane in attesa e stampa una riga di log per ogni file o directory creato o cancellato nella&lt;br /&gt;
directory-base. (solo nella directory-base, non nelle sottodirectory).&lt;br /&gt;
Quando viene cancellata la directory-base il programma termina. &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Soluzione di Pierg==&lt;br /&gt;
&amp;lt;source lang='c'&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/inotify.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define EVENT_SIZE  ( sizeof (struct inotify_event) )&lt;br /&gt;
#define EVENT_BUF_LEN     ( 1024 * ( EVENT_SIZE + 16 ) )&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv []) {&lt;br /&gt;
&lt;br /&gt;
	int stat, fd, wd, length, i = 0;&lt;br /&gt;
	char *directory_base = argv[1];	&lt;br /&gt;
	char buffer[EVENT_BUF_LEN];&lt;br /&gt;
	int boolean = 1;&lt;br /&gt;
&lt;br /&gt;
	/* Make the directory */&lt;br /&gt;
	stat = mkdir(argv[1], S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);&lt;br /&gt;
	&lt;br /&gt;
	/* Checking for error */&lt;br /&gt;
	if (stat != 0) {&lt;br /&gt;
		perror (&amp;quot;Error directory is not create&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/* Creating the INOTIFY instance */&lt;br /&gt;
  	fd = inotify_init();&lt;br /&gt;
&lt;br /&gt;
  	/* Checking for error */&lt;br /&gt;
  	if ( fd &amp;lt; 0 ) {&lt;br /&gt;
    		perror(&amp;quot;Error in inotify_init&amp;quot;);&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
  	/* Adding the directory into watch list. &lt;br /&gt;
           Here, the suggestion is to validate the existence of the directory before adding into monitoring list. */&lt;br /&gt;
  	wd = inotify_add_watch(fd, directory_base, IN_CREATE | IN_DELETE | IN_DELETE_SELF);&lt;br /&gt;
&lt;br /&gt;
	/* It continue until directory-base exist */&lt;br /&gt;
	while (boolean != 0) {&lt;br /&gt;
&lt;br /&gt;
	  	/* Read to determine the event change happens on the directory. &lt;br /&gt;
		   Actually this read blocks until the change event occurs. */ &lt;br /&gt;
		length = read(fd, buffer, EVENT_BUF_LEN); &lt;br /&gt;
&lt;br /&gt;
	  	/* Checking for error */&lt;br /&gt;
	  	if ( length &amp;lt; 0 ) {&lt;br /&gt;
	   		 perror(&amp;quot;Error in read&amp;quot;);&lt;br /&gt;
	  	}  &lt;br /&gt;
&lt;br /&gt;
	  	/* Actually read return the list of change events happens. &lt;br /&gt;
		   Here, read the change event one by one and process it accordingly. */&lt;br /&gt;
	  	while (i &amp;lt; length) {    &lt;br /&gt;
	 &lt;br /&gt;
			struct inotify_event *event = (struct inotify_event*) &amp;amp;buffer[i];   &lt;br /&gt;
	  &lt;br /&gt;
			if (event-&amp;gt;len) {&lt;br /&gt;
&lt;br /&gt;
				if (event-&amp;gt;mask &amp;amp; IN_CREATE) {&lt;br /&gt;
&lt;br /&gt;
		     			if (event-&amp;gt;mask &amp;amp; IN_ISDIR) {&lt;br /&gt;
			 			printf(&amp;quot;New directory %s created.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
		       			}&lt;br /&gt;
					else {&lt;br /&gt;
			  			printf(&amp;quot;New file %s created.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
					}&lt;br /&gt;
		      	        }&lt;br /&gt;
		      		else if (event-&amp;gt;mask &amp;amp; IN_DELETE) {&lt;br /&gt;
&lt;br /&gt;
					if (event-&amp;gt;mask &amp;amp; IN_ISDIR) {&lt;br /&gt;
			  			printf( &amp;quot;Directory %s deleted.\n&amp;quot;, event-&amp;gt;name );&lt;br /&gt;
					}&lt;br /&gt;
					else {&lt;br /&gt;
			  			printf(&amp;quot;File %s deleted.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
					}&lt;br /&gt;
		      		}&lt;br /&gt;
				/* Removing the directory */&lt;br /&gt;
				else if (event-&amp;gt;mask &amp;amp; IN_DELETE_SELF) {&lt;br /&gt;
					printf( &amp;quot;Directory %s deleted.\n&amp;quot;, event-&amp;gt;name );&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
	    		}&lt;br /&gt;
	    		i += EVENT_SIZE + event-&amp;gt;len;&lt;br /&gt;
		}	&lt;br /&gt;
		boolean = 0;&lt;br /&gt;
	}&lt;br /&gt;
	/* Removing the directory from the watch list */&lt;br /&gt;
   	inotify_rm_watch(fd, wd);&lt;br /&gt;
&lt;br /&gt;
  	/* Closing the INOTIFY instance */&lt;br /&gt;
   	close(fd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2014&amp;diff=918</id>
		<title>Esercizio 1, prova pratica 29.05.2014</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2014&amp;diff=918"/>
		<updated>2015-03-23T18:12:54Z</updated>

		<summary type="html">&lt;p&gt;Pierg: /* Soluzione di Pierg */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Scrivere un programma con un solo parametro.&lt;br /&gt;
Come prima cosa il programma deve creare una directory con il path specificato nel parametro. Se la directory esiste gia' o si&lt;br /&gt;
verifica un errore nella creazione, il programma deve terminare. Chiameremo questa directory “directory-base”&lt;br /&gt;
Il programma usando inotify rimane in attesa e stampa una riga di log per ogni file o directory creato o cancellato nella&lt;br /&gt;
directory-base. (solo nella directory-base, non nelle sottodirectory).&lt;br /&gt;
Quando viene cancellata la directory-base il programma termina. &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Soluzione di Pierg==&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/inotify.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define EVENT_SIZE  ( sizeof (struct inotify_event) )&lt;br /&gt;
#define EVENT_BUF_LEN     ( 1024 * ( EVENT_SIZE + 16 ) )&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv []) {&lt;br /&gt;
&lt;br /&gt;
	int stat, fd, wd, length, i = 0;&lt;br /&gt;
	char *directory_base = argv[1];	&lt;br /&gt;
	char buffer[EVENT_BUF_LEN];&lt;br /&gt;
	int boolean = 1;&lt;br /&gt;
&lt;br /&gt;
	/* Make the directory */&lt;br /&gt;
	stat = mkdir(argv[1], S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);&lt;br /&gt;
	&lt;br /&gt;
	/* Checking for error */&lt;br /&gt;
	if (stat != 0) {&lt;br /&gt;
		perror (&amp;quot;Error directory is not create&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/* Creating the INOTIFY instance */&lt;br /&gt;
  	fd = inotify_init();&lt;br /&gt;
&lt;br /&gt;
  	/* Checking for error */&lt;br /&gt;
  	if ( fd &amp;lt; 0 ) {&lt;br /&gt;
    		perror(&amp;quot;Error in inotify_init&amp;quot;);&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
  	/* Adding the directory into watch list. &lt;br /&gt;
           Here, the suggestion is to validate the existence of the directory before adding into monitoring list. */&lt;br /&gt;
  	wd = inotify_add_watch(fd, directory_base, IN_CREATE | IN_DELETE | IN_DELETE_SELF);&lt;br /&gt;
&lt;br /&gt;
	/* It continue until directory-base exist */&lt;br /&gt;
	while (boolean != 0) {&lt;br /&gt;
&lt;br /&gt;
	  	/* Read to determine the event change happens on the directory. &lt;br /&gt;
		   Actually this read blocks until the change event occurs. */ &lt;br /&gt;
		length = read(fd, buffer, EVENT_BUF_LEN); &lt;br /&gt;
&lt;br /&gt;
	  	/* Checking for error */&lt;br /&gt;
	  	if ( length &amp;lt; 0 ) {&lt;br /&gt;
	   		 perror(&amp;quot;Error in read&amp;quot;);&lt;br /&gt;
	  	}  &lt;br /&gt;
&lt;br /&gt;
	  	/* Actually read return the list of change events happens. &lt;br /&gt;
		   Here, read the change event one by one and process it accordingly. */&lt;br /&gt;
	  	while (i &amp;lt; length) {    &lt;br /&gt;
	 &lt;br /&gt;
			struct inotify_event *event = (struct inotify_event*) &amp;amp;buffer[i];   &lt;br /&gt;
	  &lt;br /&gt;
			if (event-&amp;gt;len) {&lt;br /&gt;
&lt;br /&gt;
				if (event-&amp;gt;mask &amp;amp; IN_CREATE) {&lt;br /&gt;
&lt;br /&gt;
		     			if (event-&amp;gt;mask &amp;amp; IN_ISDIR) {&lt;br /&gt;
			 			printf(&amp;quot;New directory %s created.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
		       			}&lt;br /&gt;
					else {&lt;br /&gt;
			  			printf(&amp;quot;New file %s created.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
					}&lt;br /&gt;
		      	        }&lt;br /&gt;
		      		else if (event-&amp;gt;mask &amp;amp; IN_DELETE) {&lt;br /&gt;
&lt;br /&gt;
					if (event-&amp;gt;mask &amp;amp; IN_ISDIR) {&lt;br /&gt;
			  			printf( &amp;quot;Directory %s deleted.\n&amp;quot;, event-&amp;gt;name );&lt;br /&gt;
					}&lt;br /&gt;
					else {&lt;br /&gt;
			  			printf(&amp;quot;File %s deleted.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
					}&lt;br /&gt;
		      		}&lt;br /&gt;
				/* Removing the directory */&lt;br /&gt;
				else if (event-&amp;gt;mask &amp;amp; IN_DELETE_SELF) {&lt;br /&gt;
					printf( &amp;quot;Directory %s deleted.\n&amp;quot;, event-&amp;gt;name );&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
	    		}&lt;br /&gt;
	    		i += EVENT_SIZE + event-&amp;gt;len;&lt;br /&gt;
		}	&lt;br /&gt;
		boolean = 0;&lt;br /&gt;
	}&lt;br /&gt;
	/* Removing the directory from the watch list */&lt;br /&gt;
   	inotify_rm_watch(fd, wd);&lt;br /&gt;
&lt;br /&gt;
  	/* Closing the INOTIFY instance */&lt;br /&gt;
   	close(fd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2013&amp;diff=917</id>
		<title>Esercizio 1, prova pratica 29.05.2013</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2013&amp;diff=917"/>
		<updated>2015-03-23T14:17:08Z</updated>

		<summary type="html">&lt;p&gt;Pierg: /* Soluzione di Pierg */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Scrivere un programma testeventfd che faccia uso della system call eventfd.&lt;br /&gt;
In particolare il programma deve eseguire una fork, quando l'utente digita un numero letto dal processo padre, il processo&lt;br /&gt;
figlio deve stampare un numero uguale di x.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Soluzione di Pierg==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/eventfd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv[]) {&lt;br /&gt;
	&lt;br /&gt;
	int efd,i, j;&lt;br /&gt;
        /* If doesn't have argument */&lt;br /&gt;
	if (argc &amp;lt; 2) {&lt;br /&gt;
		fprintf(stderr, &amp;quot;Usage: %s&amp;lt;num&amp;gt;...\n&amp;quot;, argv[0]);&lt;br /&gt;
		exit(EXIT_FAILURE);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/* Check for eventfd error */&lt;br /&gt;
	efd = eventfd(0, 0);&lt;br /&gt;
	if (efd == -1) {&lt;br /&gt;
		perror(&amp;quot;Eventfd Error&amp;quot;); &lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Use fork to move eventfd form parent to child */&lt;br /&gt;
	switch (fork()) {&lt;br /&gt;
		&lt;br /&gt;
		/* If move is right */&lt;br /&gt;
		case 0:&lt;br /&gt;
&lt;br /&gt;
			/* First for is used for check until the last argument  */&lt;br /&gt;
			for (j = 1; j &amp;lt; argc; j++) {&lt;br /&gt;
				printf (&amp;quot;%s\n&amp;quot;, argv[j]);&lt;br /&gt;
&lt;br /&gt;
				/* Second for is used to print the 'x' of the argument passed by terminal */&lt;br /&gt;
				for (i = atoi(argv[j]); i &amp;gt; 0; i--) {&lt;br /&gt;
					printf (&amp;quot;x\n&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
			&lt;br /&gt;
			}&lt;br /&gt;
			exit(EXIT_SUCCESS);&lt;br /&gt;
		&lt;br /&gt;
		/* Check for error */&lt;br /&gt;
		case -1:&lt;br /&gt;
			perror(&amp;quot;Fork Error&amp;quot;); &lt;br /&gt;
			exit(EXIT_FAILURE);&lt;br /&gt;
&lt;br /&gt;
		/* Wait child finish */&lt;br /&gt;
		default:&lt;br /&gt;
			wait();&lt;br /&gt;
			exit(EXIT_SUCCESS);	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2013&amp;diff=916</id>
		<title>Esercizio 1, prova pratica 29.05.2013</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2013&amp;diff=916"/>
		<updated>2015-03-22T18:09:12Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Scrivere un programma testeventfd che faccia uso della system call eventfd.&lt;br /&gt;
In particolare il programma deve eseguire una fork, quando l'utente digita un numero letto dal processo padre, il processo&lt;br /&gt;
figlio deve stampare un numero uguale di x.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Soluzione di Pierg==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/eventfd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv[]) {&lt;br /&gt;
	&lt;br /&gt;
	int efd,i, j;&lt;br /&gt;
        /* If doesn't have argument */&lt;br /&gt;
	if (argc &amp;lt; 2) {&lt;br /&gt;
		fprintf(stderr, &amp;quot;Usage: %s&amp;lt;num&amp;gt;...\n&amp;quot;, argv[0]);&lt;br /&gt;
		exit(EXIT_FAILURE);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/* Check for eventfd error */&lt;br /&gt;
	efd = eventfd(0, 0);&lt;br /&gt;
	if (efd == -1) {&lt;br /&gt;
		perror(&amp;quot;Eventfd Error&amp;quot;); &lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Use fork to move eventfd form parent ot child */&lt;br /&gt;
	switch (fork()) {&lt;br /&gt;
		&lt;br /&gt;
		/* If move is right */&lt;br /&gt;
		case 0:&lt;br /&gt;
&lt;br /&gt;
			/* First for is used for check until the last argument  */&lt;br /&gt;
			for (j = 1; j &amp;lt; argc; j++) {&lt;br /&gt;
				printf (&amp;quot;%s\n&amp;quot;, argv[j]);&lt;br /&gt;
&lt;br /&gt;
				/* Second for is used to print the 'x' of the argument passed by terminal */&lt;br /&gt;
				for (i = atoi(argv[j]); i &amp;gt; 0; i--) {&lt;br /&gt;
					printf (&amp;quot;x\n&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
			&lt;br /&gt;
			}&lt;br /&gt;
			exit(EXIT_SUCCESS);&lt;br /&gt;
		&lt;br /&gt;
		/* Check for error */&lt;br /&gt;
		case -1:&lt;br /&gt;
			perror(&amp;quot;Fork Error&amp;quot;); &lt;br /&gt;
			exit(EXIT_FAILURE);&lt;br /&gt;
&lt;br /&gt;
		/* Wait child finish */&lt;br /&gt;
		default:&lt;br /&gt;
			wait();&lt;br /&gt;
			exit(EXIT_SUCCESS);	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2014&amp;diff=915</id>
		<title>Esercizio 1, prova pratica 29.05.2014</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2014&amp;diff=915"/>
		<updated>2015-03-22T18:08:57Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Scrivere un programma con un solo parametro.&lt;br /&gt;
Come prima cosa il programma deve creare una directory con il path specificato nel parametro. Se la directory esiste gia' o si&lt;br /&gt;
verifica un errore nella creazione, il programma deve terminare. Chiameremo questa directory “directory-base”&lt;br /&gt;
Il programma usando inotify rimane in attesa e stampa una riga di log per ogni file o directory creato o cancellato nella&lt;br /&gt;
directory-base. (solo nella directory-base, non nelle sottodirectory).&lt;br /&gt;
Quando viene cancellata la directory-base il programma termina. &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Soluzione di Pierg==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/inotify.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define EVENT_SIZE  ( sizeof (struct inotify_event) )&lt;br /&gt;
#define EVENT_BUF_LEN     ( 1024 * ( EVENT_SIZE + 16 ) )&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv []) {&lt;br /&gt;
&lt;br /&gt;
	int stat, fd, wd, length, i = 0;&lt;br /&gt;
	char *directory_base = argv[1];	&lt;br /&gt;
	char buffer[EVENT_BUF_LEN];&lt;br /&gt;
&lt;br /&gt;
	/* Make the directory */&lt;br /&gt;
	stat = mkdir(argv[1], S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);&lt;br /&gt;
	&lt;br /&gt;
	/* Checking for error */&lt;br /&gt;
	if (stat != 0) {&lt;br /&gt;
		perror (&amp;quot;Error directory is not create&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/* Creating the INOTIFY instance */&lt;br /&gt;
  	fd = inotify_init();&lt;br /&gt;
&lt;br /&gt;
  	/* Checking for error */&lt;br /&gt;
  	if ( fd &amp;lt; 0 ) {&lt;br /&gt;
    		perror(&amp;quot;Errror in inotify_init&amp;quot;);&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
  	/* Adding the directory into watch list. &lt;br /&gt;
           Here, the suggestion is to validate the existence of the directory before adding into monitoring list. */&lt;br /&gt;
  	wd = inotify_add_watch(fd, directory_base, IN_CREATE | IN_DELETE);&lt;br /&gt;
&lt;br /&gt;
  	/* Read to determine the event change happens on the directory. &lt;br /&gt;
	   Actually this read blocks until the change event occurs. */ &lt;br /&gt;
	length = read(fd, buffer, EVENT_BUF_LEN); &lt;br /&gt;
&lt;br /&gt;
  	/* Checking for error */&lt;br /&gt;
  	if ( length &amp;lt; 0 ) {&lt;br /&gt;
   		 perror(&amp;quot;Error in read&amp;quot;);&lt;br /&gt;
  	}  &lt;br /&gt;
&lt;br /&gt;
  	/* Actually read return the list of change events happens. &lt;br /&gt;
           Here, read the change event one by one and process it accordingly. */&lt;br /&gt;
  	while (i &amp;lt; length) {    &lt;br /&gt;
 &lt;br /&gt;
		struct inotify_event *event = (struct inotify_event*) &amp;amp;buffer[i];   &lt;br /&gt;
  &lt;br /&gt;
		if (event-&amp;gt;len) {&lt;br /&gt;
&lt;br /&gt;
			if (event-&amp;gt;mask &amp;amp; IN_CREATE) {&lt;br /&gt;
&lt;br /&gt;
	     			if (event-&amp;gt;mask &amp;amp; IN_ISDIR) {&lt;br /&gt;
		 			printf(&amp;quot;New directory %s created.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
	       			}&lt;br /&gt;
				else {&lt;br /&gt;
		  			printf(&amp;quot;New file %s created.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
				}&lt;br /&gt;
	      	        }&lt;br /&gt;
	      		else if (event-&amp;gt;mask &amp;amp; IN_DELETE) {&lt;br /&gt;
&lt;br /&gt;
				if (event-&amp;gt;mask &amp;amp; IN_ISDIR) {&lt;br /&gt;
		  			printf( &amp;quot;Directory %s deleted.\n&amp;quot;, event-&amp;gt;name );&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
		  			printf(&amp;quot;File %s deleted.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
				}&lt;br /&gt;
	      		}&lt;br /&gt;
    		}&lt;br /&gt;
    		i += EVENT_SIZE + event-&amp;gt;len;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Removing the directory from the watch list */&lt;br /&gt;
   	inotify_rm_watch(fd, wd);&lt;br /&gt;
&lt;br /&gt;
  	/* Closing the INOTIFY instance */&lt;br /&gt;
   	close(fd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2013&amp;diff=914</id>
		<title>Esercizio 1, prova pratica 29.05.2013</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2013&amp;diff=914"/>
		<updated>2015-03-22T18:06:28Z</updated>

		<summary type="html">&lt;p&gt;Pierg: Created page with &amp;quot;&amp;lt;source lang=&amp;quot;txt&amp;quot;&amp;gt; Scrivere un programma testeventfd che faccia uso della system call eventfd. In particolare il programma deve eseguire una fork, quando l'utente digita un n...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;txt&amp;quot;&amp;gt;&lt;br /&gt;
Scrivere un programma testeventfd che faccia uso della system call eventfd.&lt;br /&gt;
In particolare il programma deve eseguire una fork, quando l'utente digita un numero letto dal processo padre, il processo&lt;br /&gt;
figlio deve stampare un numero uguale di x.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Soluzione di Pierg==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/eventfd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv[]) {&lt;br /&gt;
	&lt;br /&gt;
	int efd,i, j;&lt;br /&gt;
        /* If doesn't have argument */&lt;br /&gt;
	if (argc &amp;lt; 2) {&lt;br /&gt;
		fprintf(stderr, &amp;quot;Usage: %s&amp;lt;num&amp;gt;...\n&amp;quot;, argv[0]);&lt;br /&gt;
		exit(EXIT_FAILURE);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/* Check for eventfd error */&lt;br /&gt;
	efd = eventfd(0, 0);&lt;br /&gt;
	if (efd == -1) {&lt;br /&gt;
		perror(&amp;quot;Eventfd Error&amp;quot;); &lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Use fork to move eventfd form parent ot child */&lt;br /&gt;
	switch (fork()) {&lt;br /&gt;
		&lt;br /&gt;
		/* If move is right */&lt;br /&gt;
		case 0:&lt;br /&gt;
&lt;br /&gt;
			/* First for is used for check until the last argument  */&lt;br /&gt;
			for (j = 1; j &amp;lt; argc; j++) {&lt;br /&gt;
				printf (&amp;quot;%s\n&amp;quot;, argv[j]);&lt;br /&gt;
&lt;br /&gt;
				/* Second for is used to print the 'x' of the argument passed by terminal */&lt;br /&gt;
				for (i = atoi(argv[j]); i &amp;gt; 0; i--) {&lt;br /&gt;
					printf (&amp;quot;x\n&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
			&lt;br /&gt;
			}&lt;br /&gt;
			exit(EXIT_SUCCESS);&lt;br /&gt;
		&lt;br /&gt;
		/* Check for error */&lt;br /&gt;
		case -1:&lt;br /&gt;
			perror(&amp;quot;Fork Error&amp;quot;); &lt;br /&gt;
			exit(EXIT_FAILURE);&lt;br /&gt;
&lt;br /&gt;
		/* Wait child finish */&lt;br /&gt;
		default:&lt;br /&gt;
			wait();&lt;br /&gt;
			exit(EXIT_SUCCESS);	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=913</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=913"/>
		<updated>2015-03-22T18:04:56Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questo &amp;amp;egrave; il Wiki del Corso di Sistemi Operativi&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.06.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova_pratica_21_01_15]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 17.06.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 - 25.09.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20/02/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Demone ruba input]]&lt;br /&gt;
&lt;br /&gt;
[[wifi daemon]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Problema Dei Filosofi]]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unibo.it/~renzo/so/portability.tgz portability.tgz]&lt;br /&gt;
&lt;br /&gt;
[[listx.h commentato + esempio su container_of]]&lt;br /&gt;
&lt;br /&gt;
[[Congettura di Goldbach]]&lt;br /&gt;
&lt;br /&gt;
[[list segments]]&lt;br /&gt;
&lt;br /&gt;
[[Execv/fork su file aperto]]&lt;br /&gt;
&lt;br /&gt;
[[Angry_Children]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 12/02/2009]]&lt;br /&gt;
&lt;br /&gt;
[[(Programma C) Un quadrato nella matrice]]&lt;br /&gt;
&lt;br /&gt;
[[&amp;quot;classi&amp;quot;_in_C]]&lt;br /&gt;
&lt;br /&gt;
[[Esempi del 02 dicembre 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Materiale dell'AA 2013-14]]&lt;br /&gt;
----&lt;br /&gt;
Ricordate che per creare un account o quando viene richiesto di risolvere un semplice calcolo occorre ricordare quanto scritto [[qui]]&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2014&amp;diff=912</id>
		<title>Esercizio 1, prova pratica 29.05.2014</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Esercizio_1,_prova_pratica_29.05.2014&amp;diff=912"/>
		<updated>2015-03-22T16:14:44Z</updated>

		<summary type="html">&lt;p&gt;Pierg: Created page with &amp;quot;&amp;lt;source lang=&amp;quot;txt&amp;quot;&amp;gt; Scrivere un programma con un solo parametro. Come prima cosa il programma deve creare una directory con il path specificato nel parametro. Se la directory ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;txt&amp;quot;&amp;gt;&lt;br /&gt;
Scrivere un programma con un solo parametro.&lt;br /&gt;
Come prima cosa il programma deve creare una directory con il path specificato nel parametro. Se la directory esiste gia' o si&lt;br /&gt;
verifica un errore nella creazione, il programma deve terminare. Chiameremo questa directory “directory-base”&lt;br /&gt;
Il programma usando inotify rimane in attesa e stampa una riga di log per ogni file o directory creato o cancellato nella&lt;br /&gt;
directory-base. (solo nella directory-base, non nelle sottodirectory).&lt;br /&gt;
Quando viene cancellata la directory-base il programma termina. &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Soluzione di Pierg==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/inotify.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define EVENT_SIZE  ( sizeof (struct inotify_event) )&lt;br /&gt;
#define EVENT_BUF_LEN     ( 1024 * ( EVENT_SIZE + 16 ) )&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv []) {&lt;br /&gt;
&lt;br /&gt;
	int stat, fd, wd, length, i = 0;&lt;br /&gt;
	char *directory_base = argv[1];	&lt;br /&gt;
	char buffer[EVENT_BUF_LEN];&lt;br /&gt;
&lt;br /&gt;
	/* Make the directory */&lt;br /&gt;
	stat = mkdir(argv[1], S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);&lt;br /&gt;
	&lt;br /&gt;
	/* Checking for error */&lt;br /&gt;
	if (stat != 0) {&lt;br /&gt;
		perror (&amp;quot;Error directory is not create&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/* Creating the INOTIFY instance */&lt;br /&gt;
  	fd = inotify_init();&lt;br /&gt;
&lt;br /&gt;
  	/* Checking for error */&lt;br /&gt;
  	if ( fd &amp;lt; 0 ) {&lt;br /&gt;
    		perror(&amp;quot;Errror in inotify_init&amp;quot;);&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
  	/* Adding the directory into watch list. &lt;br /&gt;
           Here, the suggestion is to validate the existence of the directory before adding into monitoring list. */&lt;br /&gt;
  	wd = inotify_add_watch(fd, directory_base, IN_CREATE | IN_DELETE);&lt;br /&gt;
&lt;br /&gt;
  	/* Read to determine the event change happens on the directory. &lt;br /&gt;
	   Actually this read blocks until the change event occurs. */ &lt;br /&gt;
	length = read(fd, buffer, EVENT_BUF_LEN); &lt;br /&gt;
&lt;br /&gt;
  	/* Checking for error */&lt;br /&gt;
  	if ( length &amp;lt; 0 ) {&lt;br /&gt;
   		 perror(&amp;quot;Error in read&amp;quot;);&lt;br /&gt;
  	}  &lt;br /&gt;
&lt;br /&gt;
  	/* Actually read return the list of change events happens. &lt;br /&gt;
           Here, read the change event one by one and process it accordingly. */&lt;br /&gt;
  	while (i &amp;lt; length) {    &lt;br /&gt;
 &lt;br /&gt;
		struct inotify_event *event = (struct inotify_event*) &amp;amp;buffer[i];   &lt;br /&gt;
  &lt;br /&gt;
		if (event-&amp;gt;len) {&lt;br /&gt;
&lt;br /&gt;
			if (event-&amp;gt;mask &amp;amp; IN_CREATE) {&lt;br /&gt;
&lt;br /&gt;
	     			if (event-&amp;gt;mask &amp;amp; IN_ISDIR) {&lt;br /&gt;
		 			printf(&amp;quot;New directory %s created.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
	       			}&lt;br /&gt;
				else {&lt;br /&gt;
		  			printf(&amp;quot;New file %s created.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
				}&lt;br /&gt;
	      	        }&lt;br /&gt;
	      		else if (event-&amp;gt;mask &amp;amp; IN_DELETE) {&lt;br /&gt;
&lt;br /&gt;
				if (event-&amp;gt;mask &amp;amp; IN_ISDIR) {&lt;br /&gt;
		  			printf( &amp;quot;Directory %s deleted.\n&amp;quot;, event-&amp;gt;name );&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
		  			printf(&amp;quot;File %s deleted.\n&amp;quot;, event-&amp;gt;name);&lt;br /&gt;
				}&lt;br /&gt;
	      		}&lt;br /&gt;
    		}&lt;br /&gt;
    		i += EVENT_SIZE + event-&amp;gt;len;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Removing the directory from the watch list */&lt;br /&gt;
   	inotify_rm_watch(fd, wd);&lt;br /&gt;
&lt;br /&gt;
  	/* Closing the INOTIFY instance */&lt;br /&gt;
   	close(fd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=911</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Main_Page&amp;diff=911"/>
		<updated>2015-03-22T16:12:29Z</updated>

		<summary type="html">&lt;p&gt;Pierg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questo &amp;amp;egrave; il Wiki del Corso di Sistemi Operativi&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 29.05.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20.06.2013]]&lt;br /&gt;
&lt;br /&gt;
[[Prova_pratica_21_01_15]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 17.06.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1 - 25.09.2014]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 20/02/2014]]&lt;br /&gt;
&lt;br /&gt;
[[Demone ruba input]]&lt;br /&gt;
&lt;br /&gt;
[[wifi daemon]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 13/09/2013]]&lt;br /&gt;
&lt;br /&gt;
[[Problema Dei Filosofi]]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unibo.it/~renzo/so/portability.tgz portability.tgz]&lt;br /&gt;
&lt;br /&gt;
[[listx.h commentato + esempio su container_of]]&lt;br /&gt;
&lt;br /&gt;
[[Congettura di Goldbach]]&lt;br /&gt;
&lt;br /&gt;
[[list segments]]&lt;br /&gt;
&lt;br /&gt;
[[Execv/fork su file aperto]]&lt;br /&gt;
&lt;br /&gt;
[[Angry_Children]]&lt;br /&gt;
&lt;br /&gt;
[[Esercizio 1, prova pratica 12/02/2009]]&lt;br /&gt;
&lt;br /&gt;
[[(Programma C) Un quadrato nella matrice]]&lt;br /&gt;
&lt;br /&gt;
[[&amp;quot;classi&amp;quot;_in_C]]&lt;br /&gt;
&lt;br /&gt;
[[Esempi del 02 dicembre 2014]]&lt;br /&gt;
&lt;br /&gt;
[[Materiale dell'AA 2013-14]]&lt;br /&gt;
----&lt;br /&gt;
Ricordate che per creare un account o quando viene richiesto di risolvere un semplice calcolo occorre ricordare quanto scritto [[qui]]&lt;/div&gt;</summary>
		<author><name>Pierg</name></author>
	</entry>
</feed>