From f95b34c637c6915f0febb99d8c8c55f7f831049f Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Thu, 8 Mar 2001 19:11:51 +0000 Subject: [PATCH] Aggiunto poca roba sui file. --- files.tex | 75 +++++++++++++++++++++++++++++++++++++++++++---------- process.tex | 2 ++ 2 files changed, 64 insertions(+), 13 deletions(-) diff --git a/files.tex b/files.tex index b7ad2fd..d116627 100644 --- a/files.tex +++ b/files.tex @@ -382,14 +382,13 @@ precedente: ovviamente perch componenti indicati come directory esistano e siano effettivamente directory, inoltre i permessi devono consentire l'accesso. - Se il pathname comincia per \texttt{/} la ricerca parte dalla directory radice -del processo che (a meno di un \textit{chroot} su cui torneremo in seguito) è -la stessa per tutti i processi ed equivale alla radice dell'albero -(\ref{sec:file_gen}): in questo caso si parla di un pathname -\textsl{assoluto}. Altrimenti la ricerca parte dalla directory di lavoro -corrente (\textit{current working directory}, su cui pure torneremo più avanti) -ed il pathname è detto \textsl{relativo}. +del processo che (a meno di un \textit{chroot} su cui torneremo in seguito, +vedi \ref{sec:file_chroot}) è la stessa per tutti i processi ed equivale alla +radice dell'albero (\ref{sec:file_gen}): in questo caso si parla di un +pathname \textsl{assoluto}. Altrimenti la ricerca parte dalla directory +corrente (su cui pure torneremo più avanti in \ref{sec:file_cwd}) ed il +pathname è detto \textsl{relativo}. I componenti \texttt{.} e \texttt{..} hanno un significato speciale e vengono inseriti in ogni directory, il primo fa riferimento alla directory corrente e @@ -404,6 +403,33 @@ C normalmente si mette in file con l'estensione .c, ma questa convenzione. +\section{L'interfaccia al filesystem} +\label{sec:file_filesys_interf} + +Prima di entrare nei dettagli della manipolazione del contenuto dei file +esamineremo le funzioni utilizzate per operare sui file piuttosto che sul loro +contenuto. Le funzioni che esamineremo in questa sezione pertanto sono quelle +che permettono di esaminare e modificare le directory, rinominare o cancellare +i file, esaminare o settare i loro attributi. + +\subsection{La directory di lavoro} + +Come accennato ciascun processo è associato ad una directory nel filesystem +che è chiamata directory corrente o directory di lavoro (\textit{current + working directory}) che è quella a cui si fa riferimento quando un filename +è espresso in forma relativa (relativa appunto a questa directory). + +Quando un utente effettua il login questa directory viene settata alla +cosiddetta \textit{home directory} del suo account, il comando \texttt{cd} +della shell consente di cambiarla a piacere. La directory corrente inoltre +viene conservata nella creazione di un nuovo processo tramite la funzione fork (\ref{sec:proc_fork}) + + +\section{L'input/output di basso livello} +\label{sec:file_lowlev_io} +% +% Questa va per ultima. Va bene che e` la più usata, ma è basata sulle altre +% \section{I file stream} \label{sec:file_stream} @@ -413,12 +439,35 @@ operazioni connesse all'uso dei file. L'interfaccia l'header file \texttt{stdio.h}. Per ragioni storiche la struttura di dati che rappresenta un stream è stata -chiamata \texttt{FILE}, dato che le funzioni di libreria usano sempre come -parametri oggetti di tipo \texttt{FILE *} alle volte si usa il termine -puntatore a file come sinonimo di stream. - - - +chiamata \texttt{FILE}, questi oggetti sono creati dalle funzioni di libreria +e contengono tutte le informazioni necessarie a gestire le operazioni sugli +stream, come la posizione corrente, lo stato del buffer e degli indicatori di +stato e di fine del file. Per questo motivo gli utenti non devono mai +utilizzare direttamente o allocare queste strutture, ma usare sempre puntatori +del tipo \texttt{FILE *} (tanto che in certi caso il termine di puntatore a +file è diventato sinonimo di stream). + +\subsection{Gli stream standard} +\label{sec:file_stream_std} + +Quando un programma viene lanciato il processo ha sempre tre stream +predefiniti aperti, che rappresentano i canali standard di input/output +prestabiliti per il processo; anche questi tre stream sono definiti +nell'header \texttt{stdio.h} e sono: + +\begin{itemize} +\item \texttt{FILE * stdin} Lo \textit{standard input} cioè lo stream da cui + il processo riceve ordinariamente i dati in ingresso. Normalmente è associato + dalla shell all'input del terminale e prende i caratteri dalla tastiera. +\item \texttt{FILE * stdout} Lo \textit{standard input} cioè lo stream su cui + il processo invia ordinariamente i dati in uscita. Normalmente è associato + dalla shell all'output del terminale e scrive sullo schermo. +\item \texttt{FILE * stderr} Lo \textit{standard input} cioè lo stream su cui + il processo è supposto inviare i messaaggi di errore. Normalmente anch'esso + è associato dalla shell all'output del terminale e scrive sullo schermo. +\end{itemize} + +In linux %La struttura fondamentale che contiene i dati essenziali relativi ai file è il diff --git a/process.tex b/process.tex index fb1f1af..2f754b9 100644 --- a/process.tex +++ b/process.tex @@ -110,3 +110,5 @@ linux come il filesystem uid. +\section{Creazione dei processi} +\label{sec:proc_fork} -- 2.30.2