Poche aggiunte
authorSimone Piccardi <piccardi@gnulinux.it>
Wed, 16 May 2001 18:35:53 +0000 (18:35 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Wed, 16 May 2001 18:35:53 +0000 (18:35 +0000)
filedir.tex

index 34e64d9ddc6929cf1bc41a6f9cf8ee6886493daf..a8b3a8beb2b959193d127858cb07296729976f02 100644 (file)
@@ -236,34 +236,38 @@ non sono in grado di gestire e la cui rimozione diventa estremamente
 complicata (in genere occorre far girare il programma \texttt{fsck} per
 riparare il filesystem).
 
 complicata (in genere occorre far girare il programma \texttt{fsck} per
 riparare il filesystem).
 
-
 La rimozione di un file (o più precisamente della voce che lo referenzia) si
 effettua con la funzione \texttt{unlink}; il suo prototipo è il seguente:
 
 \begin{prototype}{unistd.h}{int unlink(const char * filename)}
   Cancella il nome specificato dal pathname nella relativa directory e
 La rimozione di un file (o più precisamente della voce che lo referenzia) si
 effettua con la funzione \texttt{unlink}; il suo prototipo è il seguente:
 
 \begin{prototype}{unistd.h}{int unlink(const char * filename)}
   Cancella il nome specificato dal pathname nella relativa directory e
-  decrementa il numero di riferimenti nel relativo inode.
+  decrementa il numero di riferimenti nel relativo inode. Nel caso di link
+  simbolico cancella il link simbolico; nel caso di socket, fifo o file di
+  dispositivo rimuove il nome, ma come per i file i processi che hanno aperto
+  uno di questi oggetti possono continuare ad utilizzarlo.
   
   La funzione restituisce zero in caso di successo e -1 per un errore, nel
   qual caso il file non viene toccato. La variabile \texttt{errno} viene
   settata secondo i seguenti codici di errore:
   \begin{errlist}
   
   La funzione restituisce zero in caso di successo e -1 per un errore, nel
   qual caso il file non viene toccato. La variabile \texttt{errno} viene
   settata secondo i seguenti codici di errore:
   \begin{errlist}
-  \item \texttt{EXDEV} \texttt{oldname} e \texttt{newname} non sono sullo
-    stesso filesystem.
-  \item \texttt{EPERM} il filesystem che contiene \texttt{oldname} e
-    \texttt{newname} non supporta i link diretti.
-  \item \texttt{EACCESS} 
-    Non c'è il permesso di scrittura per la directory in cui si vuole creare
-    il nuovo link.
-  \item \texttt{EEXIST} Un file (o una directory) con quel nome esiste di
-    già.
-  \item \texttt{EMLINK} Ci sono troppi link al file \texttt{oldname} (il
-    numero massimo è specificato dalla variabile \texttt{LINK\_MAX}, vedi
-    \secref{sec:xxx_limits}.
-  \item \texttt{ENOSPC} La directory in cui si vuole creare il link è piena e
-    non può essere ampliata.
-  \item \texttt{EROFS} La directory su cui si vuole inserire il nuovo link è
-    su un filesystem montato readonly.
+  \item \texttt{EACCESS} Non c'è il permesso di scrittura per la directory in
+    cui si vuole creare il nuovo link o una delle directory del pathname non
+    consente la ricerca (permesso di esecuzione).
+  \item \texttt{EPERM} il pathname indica una directory o il filesystem che
+    contiene \texttt{filename} non consente l'operazione.
+  \item \texttt{EROFS} \texttt{filename} è su un filesystem montato in sola
+    lettura.
+  \item \texttt{EFAULT} la stringa \texttt{filename} è fuori dello spazio di
+    indirizzi del processo.
+  \item \texttt{ENAMETOOLONG} il pathname è troppo lungo.
+  \item \texttt{ENOENT} Uno dei componenti del pathname non esiste o è un link
+    simbolico spezzato.
+  \item \texttt{ENOTDIR} Uno dei componenti del pathname non è una directory.
+  \item \texttt{EISDIR} il pathname indica una directory.
+  \item \texttt{ENOMEM} Memoria insufficiente nel kernel.
+  \item \texttt{ELOOP} Ci sono troppi link simbolici nella risoluzione del
+    pathname.
+  \item \texttt{EIO} Errore di input/output.
   \end{errlist}
 \end{prototype}
 
   \end{errlist}
 \end{prototype}
 
@@ -271,7 +275,7 @@ Per cancellare una voce in una directory 
 scrittura su di essa (dato che si va a rimuovere una voce dal suo contenuto) e
 il diritto di esecuzione sulla directory che la contiene (torneremo in
 dettaglio sui permessi e gli attributi fra poco), se inoltre lo
 scrittura su di essa (dato che si va a rimuovere una voce dal suo contenuto) e
 il diritto di esecuzione sulla directory che la contiene (torneremo in
 dettaglio sui permessi e gli attributi fra poco), se inoltre lo
-\textit{sticky} bit è settato occorerà anche essere proprietari del file o
+\textit{sticky} bit è settato occorrerà anche essere proprietari del file o
 proprietari della directory (o root, per cui nessuna delle restrizioni è
 applicata).
 
 proprietari della directory (o root, per cui nessuna delle restrizioni è
 applicata).
 
@@ -290,11 +294,18 @@ usata per essere sicuri di non lasciare file temporanei su disco in caso di
 crash dei programmi; la tecnica è quella di aprire il file e chiamare
 \texttt{unlink} subito dopo.
 
 crash dei programmi; la tecnica è quella di aprire il file e chiamare
 \texttt{unlink} subito dopo.
 
+Al contrario di quanto avviene con altri unix in linux non è possibile usare
+\texttt{unlink} per cancellare una directory
+
+
 
 \subsection{Le funzioni \texttt{remove} e \texttt{rename}}
 \label{sec:filedir_cre_canc}
 
 
 
 \subsection{Le funzioni \texttt{remove} e \texttt{rename}}
 \label{sec:filedir_cre_canc}
 
 
+
+
+
 \subsection{I link simbolici}
 \label{sec:filedir_sym_link}
 
 \subsection{I link simbolici}
 \label{sec:filedir_sym_link}
 
@@ -302,7 +313,7 @@ Siccome la funzione \texttt{link} crea riferimenti agli inodes, essa pu
 funzionare soltanto per file che risiedono sullo stesso filesystem, dato che
 in questo caso è garantita l'unicità dell'inode, e solo per un filesystem di
 tipo unix.  Inoltre in linux non è consentito eseguire un link diretto ad una
 funzionare soltanto per file che risiedono sullo stesso filesystem, dato che
 in questo caso è garantita l'unicità dell'inode, e solo per un filesystem di
 tipo unix.  Inoltre in linux non è consentito eseguire un link diretto ad una
-directory se non si è root.
+directory.
 
 Per ovviare a queste limitazioni i sistemi unix supportano un'altra forma di
 link (i cosiddetti \textit{soft link} o \textit{symbolic link}), che sono,
 
 Per ovviare a queste limitazioni i sistemi unix supportano un'altra forma di
 link (i cosiddetti \textit{soft link} o \textit{symbolic link}), che sono,