X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=files.tex;h=7a52fcbcaee2fc41cb1f641f47452c84398a164f;hp=c0b2ee107636a4a44dc06cf6671802b7b2054660;hb=d790b9a3e5e8bb75163a3e63420ce4b3695e3ad4;hpb=502b29c2ea16e1ca2b335bf066ea445ad692345c diff --git a/files.tex b/files.tex index c0b2ee1..7a52fcb 100644 --- a/files.tex +++ b/files.tex @@ -386,8 +386,8 @@ 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}. +corrente (su cui pure torneremo più avanti in \ref{sec:file_dir_working}) 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 @@ -430,12 +430,12 @@ Le funzioni qui descritte servono esaminare e cambiare la directory di lavoro corrente. I prototipi di queste funzioni sono dichiarati in \texttt{unistd.h}. \begin{itemize} -\item \texttt{char * getcwd (char * buffer, size_t size)} +\item \texttt{char * getcwd (char * buffer, size\_t size)} Restituisce il filename completo della directory di lavoro corrente nella stringa puntata da \texttt{buffer}, che deve essere precedentemente allocata, per una dimensione massima di \texttt{size}. Si può anche - specificare un puntatore nullo come \texiti{buffer}, nel qual caso la + specificare un puntatore nullo come \textit{buffer}, nel qual caso la stringa sarà allocata automaticamente per una dimensione pari a \texttt{size} qualora questa sia diversa da zero, o della lunghezza esatta del pathname altrimenti. In questo caso si deve ricordare di disallocara la @@ -459,14 +459,14 @@ corrente. I prototipi di queste funzioni sono dichiarati in \texttt{unistd.h}. Di questa funzione esiste una versione \texttt{char * getwd(char * buffer)} fatta per compatibilità all'indietro con BSD, che non consente di specificare la dimensione del buffer; esso deve essere allocato in precedenza ed avere una -dimensione superiore a \texttt{PATH_MAX} (di solito 256 byters, vedi +dimensione superiore a \texttt{PATH\_MAX} (di solito 256 byters, vedi \ref{sec:xxxx_limits}; il problema è che in linux non esiste una dimensione superiore per un pathname, per cui non è detto che il buffer sia sufficiente a contenere il nome del file, e questa è la ragione principale per cui questa funzione è deprecata. -Una seconda funzione simile è \texttt{char * get_current_dir_name(void)} che è -sostanzialmente equivalente ad una \texttt{getcwd(NULL, 0)}, con la sola +Una seconda funzione simile è \texttt{char * get\_current\_dir\_name(void)} +che è sostanzialmente equivalente ad una \texttt{getcwd(NULL, 0)}, con la sola differenza che essa ritorna il valore della variabile di ambiente \texttt{PWD}, che essendo costruita dalla shell può contenere anche dei riferimenti simbolici. @@ -503,7 +503,7 @@ dell'analogo comando di shell \texttt{mkdir}; per accedere alla funzioni il programma deve includere il file \texttt{sys/stat.h}. \begin{itemize} -\item \texttt{char * mkdir (const char * dirname, mode_t mode)} +\item \texttt{char * mkdir (const char * dirname, mode\_t mode)} Questa funzione crea una nuova directory vuota con il nome indicato da \texttt{dirname}, assegnandole i permessi indicati da \texttt{mode}. Il nome @@ -547,8 +547,11 @@ la funzione \texttt{opendir} apre uno di questi stream e la funzione parlavamo in \ref{sec:file_vfs}) in una opportuna struttura \texttt{struct dirent}. +\subsection{I link simbolici e i link diretti} +\label{sec:file_link} - +Come si è già accennato nell'introduzione in un sistema unix quello che +caratterizza un file su disco è il suo \textit{inode}, è quindi