+La creazione di un nuovo collegamento diretto non copia il contenuto del file,
+ma si limita a creare una voce nella directory specificata con \var{newpath} e
+ad aumentare di uno il numero di referenze al file (riportato nel campo
+\var{st\_nlink} della struttura \var{stat}, vedi \secref{sec:file_stat})
+aggiungendo il nuovo nome ai precedenti. Si noti che uno stesso file può
+essere così chiamato con vari nomi in diverse directory.
+
+Per quanto dicevamo in \secref{sec:file_filesystem} la creazione di un
+collegamento diretto è possibile solo se entrambi i pathname sono nello stesso
+filesystem; inoltre il filesystem deve supportare i collegamenti diretti (il
+mneccanismo non è disponibile ad esempio con il filesystem \acr{vfat} di
+Windows).
+
+La funzione inoltre opera sia sui file ordinari che sugli altri oggetti del
+filesystem, con l'eccezione delle directory. In alcuni versioni di unix solo
+l'amministratore è in grado di creare un collegamento diretto ad un'altra
+directory, questo viene fatto perché con una tale operazione è possibile
+creare dei circoli nel filesystem (vedi l'esempio mostrato in
+\secref{sec:file_symlink}, dove riprenderemo il discorso) che molti programmi
+non sono in grado di gestire e la cui rimozione diventerebbe estremamente
+complicata (in genere per questo tipo di errori occorre far girare il
+programma \cmd{fsck} per riparare il filesystem).
+
+Data la pericolosità di questa operazione e la disponibilità dei link
+simbolici che possono fornire la stessa funzionalità senza questi problemi,
+nei filesystem usati in Linux questa caratteristica è stata completamente
+disabilitata, e al tentativo di creare un link diretto ad una directory la
+funzione restituisce l'errore \macro{EPERM}.
+
+La rimozione di un file (o più precisamente della voce che lo referenzia
+all'interno di una directory) si effettua con la funzione \func{unlink}; il
+suo prototipo è il seguente:
+\begin{prototype}{unistd.h}{int unlink(const char * pathname)}
+ Cancella il nome specificato dal pathname nella relativa directory e
+ 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 \var{errno} viene
+ settata secondo i seguenti codici di errore:
+ \begin{errlist}
+ \item \macro{EISDIR} \var{pathname} si riferisce ad una directory
+ (valore specifico ritornato da Linux che non consente l'uso di
+ \var{unlink} con le directory, e non conforme allo standard POSIX, che
+ prescrive invece l'uso di \macro{EPERM} in caso l'operazione non sia
+ consentita o il processo non abbia privilegi sufficienti).
+ \item \macro{EROFS} \var{pathname} è su un filesystem montato in sola
+ lettura.
+ \item \macro{EISDIR} \var{pathname} fa riferimento a una directory.
+ \end{errlist}
+ ed inoltre: \macro{EACCES}, \macro{EFAULT}, \macro{ENOENT}, \macro{ENOTDIR},
+ \macro{ENOMEM}, \macro{EROFS}, \macro{ELOOP}, \macro{EIO}.
+\end{prototype}