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
\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
\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
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
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.
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
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);
}
/*