From: Simone Piccardi Date: Tue, 8 Mar 2005 19:12:32 +0000 (+0000) Subject: Alcune correzioni al preambolo, all'uso delle captions, e alla sezione su X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=commitdiff_plain;h=7321862445902ceedfa27b3f9e250fc7ff72653e Alcune correzioni al preambolo, all'uso delle captions, e alla sezione su standard input error e output --- diff --git a/fileunix.tex b/fileunix.tex index b299eef..3e9560c 100644 --- a/fileunix.tex +++ b/fileunix.tex @@ -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 diff --git a/gapil.tex b/gapil.tex index cc24a22..3896704 100644 --- 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} diff --git a/preambolo.tex b/preambolo.tex index b78dec9..8d448b2 100644 --- a/preambolo.tex +++ b/preambolo.tex @@ -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. diff --git a/sources/mylschroot.c b/sources/mylschroot.c index 9d4d705..a2b2a8a 100644 --- a/sources/mylschroot.c +++ b/sources/mylschroot.c @@ -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); } /*