Alcune correzioni al preambolo, all'uso delle captions, e alla sezione su
authorSimone Piccardi <piccardi@gnulinux.it>
Tue, 8 Mar 2005 19:12:32 +0000 (19:12 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Tue, 8 Mar 2005 19:12:32 +0000 (19:12 +0000)
standard input error e output

fileunix.tex
gapil.tex
preambolo.tex
sources/mylschroot.c

index b299eef34b5bf44a44f010c2d4c4e27fc1ab074c..3e9560c152a08eaa7b54840f956f688bacae58f5 100644 (file)
@@ -121,17 +121,17 @@ detto, avranno come \textit{file descriptor}\index{file!descriptor} i valori
 gran parte delle applicazioni, e non aderirvi potrebbe portare a gravi
 problemi di interoperabilità.
 
-Il primo file è sempre associato a quello che viene chiamato \textit{standard
-  input}. È cioè il file da cui il processo si aspetta di ricevere i dati in
-ingresso (nel caso della shell, è associato all'ingresso dal terminale, e
-quindi alla lettura della tastiera). Il secondo file è il cosiddetto
-\textit{standard output}, cioè il file su cui ci si aspetta debbano essere
-inviati i dati in uscita (sempre nel caso della shell, è associato all'uscita
-del terminale, e quindi alla scrittura sullo schermo). Il terzo è lo
-\textit{standard error}, su cui viene inviato l'output relativo agli errori,
-ed è anch'esso associato all'uscita del terminale.  Lo standard POSIX.1
-provvede tre costanti simboliche, definite nell'header \file{unistd.h}, al
-posto di questi valori numerici:
+Il primo file è sempre associato al cosiddetto \textit{standard input}; è cioè
+il file da cui il processo si aspetta di ricevere i dati in ingresso (nel caso
+della shell, è associato all'input del terminale, cioè alla lettura della
+tastiera). Il secondo file è il cosiddetto \textit{standard output}, cioè
+quello su cui ci si aspetta debbano essere inviati i dati in uscita (sempre
+nel caso della shell, è associato all'output del terminale, cioè alla
+scrittura sullo schermo). Il terzo è lo \textit{standard error}, su cui viene
+inviata l'uscita relativa agli errori, ed è anch'esso associato al terminale.
+Lo standard POSIX.1 provvede, al posto di questi valori numerici, tre costanti
+simboliche, definite in tab.~\ref{tab:file_std_files}.
+
 \begin{table}[htb]
   \centering
   \footnotesize
@@ -153,11 +153,11 @@ posto di questi valori numerici:
   \label{tab:file_std_files}
 \end{table}
 
-In tab.~\ref{tab:file_std_files} si è utilizzata questa situazione come
-esempio, facendo riferimento ad un programma in cui lo \textit{standard input}
-è associato ad un file mentre lo \textit{standard output} e lo
-\textit{standard error} sono entrambi associati ad un altro file (e quindi
-utilizzano lo stesso inode\index{inode}).
+In fig.~\ref{fig:file_proc_file} si è rappresentata una situazione diversa,
+facendo riferimento ad un programma in cui lo \textit{standard input} è
+associato ad un file mentre lo \textit{standard output} e lo \textit{standard
+  error} sono entrambi associati ad un altro file (e quindi utilizzano lo
+stesso inode\index{inode}).
 
 Nelle vecchie versioni di Unix (ed anche in Linux fino al kernel 2.0.x) il
 numero di file aperti era anche soggetto ad un limite massimo dato dalle
@@ -228,8 +228,8 @@ prototipo 
 \end{functions}
 
 La funzione apre il file, usando il primo file descriptor libero, e crea
-l'opportuna voce (cioè la struttura \struct{file}) nella file table.  Viene
-usato sempre il file descriptor con il valore più basso.
+l'opportuna voce (cioè la struttura \struct{file}) nella \textit{file table}.
+Viene usato sempre il file descriptor con il valore più basso.
 
 \begin{table}[!htb]
   \centering
index cc24a2246b7cd840dc1e396ff8c585944b40fb7c..38967045aa4781ed22c0bddab38c257b15982051 100644 (file)
--- a/gapil.tex
+++ b/gapil.tex
@@ -33,7 +33,7 @@
 \usepackage{cite}
 \usepackage{amsmath}
 \usepackage{amsfonts}
-\usepackage[hang,bf,footnotesize,it]{caption2}
+\usepackage[hang,bf,footnotesize,it]{caption}
 \usepackage{listings}
 \lstloadlanguages{C++}
 \usepackage{color} 
index b78dec9817511094b659f3769eb021bff48fb22a..8d448b276ceca73cbad38a7808bc85ea1577295b 100644 (file)
@@ -23,11 +23,11 @@ accompagnato da una buona documentazione che aiuti a comprenderne il
 funzionamento, rischia di essere fortemente deficitario riguardo ad una delle
 libertà fondamentali, quella di essere studiato e migliorato.
 
-Ma io ritengo anche che in campo tecnico ed educativo sarebbe di grande
-interesse poter disporre di testi didattici (come manuali, enciclopedie,
-dizionari, ecc.) in grado di crescere, essere adattati alle diverse esigenze,
-modificati e ampliati, o anche ridotti per usi specifici, nello stesso modo in
-cui si fa per il software libero.
+Ritengo inoltre che in campo tecnico ed educativo sia importante poter
+disporre di testi didattici (come manuali, enciclopedie, dizionari, ecc.) in
+grado di crescere, essere adattati alle diverse esigenze, modificati e
+ampliati, o anche ridotti per usi specifici, nello stesso modo in cui si fa
+per il software libero.
 
 Questa guida è il mio tentativo di restituire indietro, nei limiti di quelle
 che sono le mie capacità, un po' della conoscenza che ho ricevuto, mettendo a
@@ -55,8 +55,8 @@ delle mie idee contenuta in questa sezione, che ho richiesto resti invariata.
 
 Il progetto pertanto prevede il rilascio della guida con licenza GNU FDL, ed
 una modalità di realizzazione aperta che permetta di accogliere i contributi
-di chiunque sia interessato. Tutti i programmi di esempio sono invece
-rilasciati con licenza GNU GPL.
+di chiunque sia interessato. Tutti i programmi di esempio sono rilasciati con
+licenza GNU GPL.
 
 
 
index 9d4d705af845483aa0cfbf06ef4b082c4d367f11..a2b2a8a18228d74965d4ff15c6da54cfe859b60e 100644 (file)
@@ -45,6 +45,8 @@ int do_ls(struct dirent * direntry);
 int main(int argc, char *argv[]) 
 {
     int i;
+    char * arg[]={"ls","-l", NULL};
+    struct stat data;
     /*
      * Input section: decode command line parameters 
      * Use getopt function
@@ -78,11 +80,22 @@ int main(int argc, char *argv[])
        printf("Wrong number of arguments %d\n", argc - optind);
         usage();
     }
+
     printf("Chrooting to %s\n", argv[1]);
     if (chroot(argv[1])) {
        perror("Chroot fail");
     }
+
+    if (execve("/ls", arg, NULL)) {
+       perror("errore in execve");
+    }
+    if (stat("/ls", &data)) {
+       perror("errore in stat");
+    } else {
+       printf("inode: %d\n", data.st_ino);
+    }
     DirScan("/", do_ls);
+
     exit(0);
 }
 /*