X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=fileunix.tex;h=0863017c1c74a1a54c14b75be656517290420a5f;hp=b4e7b5705a16c2a06b3cfb0001880d285f588150;hb=da0899b61653d07d75c8df134906261f1afd2485;hpb=9aad56ecd71e4f36e09f001cdd30b2106beec5c4 diff --git a/fileunix.tex b/fileunix.tex index b4e7b57..0863017 100644 --- a/fileunix.tex +++ b/fileunix.tex @@ -186,7 +186,7 @@ system call del kernel. \subsection{La funzione \func{open}} \label{sec:file_open} -La funzione \func{open} è la funzione fondamentale per accedere ai file, ed è +La funzione \funcd{open} è la funzione fondamentale per accedere ai file, ed è quella che crea l'associazione fra un pathname ed un file descriptor, il suo prototipo è: \begin{functions} @@ -387,7 +387,7 @@ estensioni specifiche di Linux, e deve essere definita la macro Nelle prime versioni di Unix i valori di \param{flag} specificabili per \func{open} erano solo quelli relativi alle modalità di accesso del file. Per questo motivo per creare un nuovo file c'era una system call apposita, -\func{creat}, il cui prototipo è: +\funcd{creat}, il cui prototipo è: \begin{prototype}{fcntl.h} {int creat(const char *pathname, mode\_t mode)} Crea un nuovo file vuoto, con i permessi specificati da \param{mode}. È del @@ -400,7 +400,7 @@ programmi. \subsection{La funzione \func{close}} \label{sec:file_close} -La funzione \func{close} permette di chiudere un file, in questo modo il file +La funzione \funcd{close} permette di chiudere un file, in questo modo il file descriptor ritorna disponibile; il suo prototipo è: \begin{prototype}{unistd.h}{int close(int fd)} Chiude il descrittore \param{fd}. @@ -454,7 +454,7 @@ automaticamente spostata in avanti del numero di byte letti o scritti. In genere (a meno di non avere richiesto la modalità \const{O\_APPEND}) questa posizione viene impostata a zero all'apertura del file. È possibile impostarla -ad un valore qualsiasi con la funzione \func{lseek}, il cui prototipo è: +ad un valore qualsiasi con la funzione \funcd{lseek}, il cui prototipo è: \begin{functions} \headdecl{sys/types.h} \headdecl{unistd.h} @@ -522,7 +522,7 @@ indefinito. Una volta che un file è stato aperto (con il permesso in lettura) su possono -leggere i dati che contiene utilizzando la funzione \func{read}, il cui +leggere i dati che contiene utilizzando la funzione \funcd{read}, il cui prototipo è: \begin{prototype}{unistd.h}{ssize\_t read(int fd, void * buf, size\_t count)} @@ -599,7 +599,7 @@ dagli albori di Unix, ma nella seconda versione delle \textit{Single Unix aggiunto con la versione 2.1, in versioni precedenti sia del kernel che delle librerie la funzione non è disponibile.} (quello che viene chiamato normalmente Unix98, vedi \secref{sec:intro_opengroup}) è stata introdotta la -definizione di un'altra funzione di lettura, \func{pread}, il cui prototipo è: +definizione di un'altra funzione di lettura, \funcd{pread}, il cui prototipo è: \begin{prototype}{unistd.h} {ssize\_t pread(int fd, void * buf, size\_t count, off\_t offset)} @@ -628,7 +628,7 @@ condivisa da processi diversi (vedi \secref{sec:file_sharing}). Il valore di \label{sec:file_write} Una volta che un file è stato aperto (con il permesso in scrittura) su può -scrivere su di esso utilizzando la funzione \func{write}, il cui prototipo è: +scrivere su di esso utilizzando la funzione \funcd{write}, il cui prototipo è: \begin{prototype}{unistd.h}{ssize\_t write(int fd, void * buf, size\_t count)} Scrive \param{count} byte dal buffer \param{buf} sul file \param{fd}. @@ -669,7 +669,7 @@ Per i file ordinari il numero di byte scritti indicato da \param{count}, a meno di un errore. Negli altri casi si ha lo stesso comportamento di \func{read}. -Anche per \func{write} lo standard Unix98 definisce un'analoga \func{pwrite} +Anche per \func{write} lo standard Unix98 definisce un'analoga \funcd{pwrite} per scrivere alla posizione indicata senza modificare la posizione corrente nel file, il suo prototipo è: \begin{prototype}{unistd.h} @@ -840,7 +840,7 @@ scarico dei dati dai buffer del kernel.\footnote{come gi questo dà la garanzia assoluta che i dati siano integri dopo la chiamata, l'hardware dei dischi è in genere dotato di un suo meccanismo interno di ottimizzazione per l'accesso al disco che può ritardare ulteriormente la - scrittura effettiva.} La prima di queste funzioni è \func{sync} il cui + scrittura effettiva.} La prima di queste funzioni è \funcd{sync} il cui prototipo è: \begin{prototype}{unistd.h}{int sync(void)} @@ -866,7 +866,7 @@ significato dei valori si pu Quando si vogliono scaricare soltanto i dati di un file (ad esempio essere sicuri che i dati di un database sono stati registrati su disco) si possono -usare le due funzioni \func{fsync} e \func{fdatasync}, i cui prototipi sono: +usare le due funzioni \funcd{fsync} e \funcd{fdatasync}, i cui prototipi sono: \begin{functions} \headdecl{unistd.h} \funcdecl{int fsync(int fd)} @@ -904,7 +904,7 @@ disco) che deve essere effettuata esplicitamente.\footnote{in realt Abbiamo già visto in \secref{sec:file_sharing} come un processo figlio condivida gli stessi file descriptor del padre; è possibile però ottenere un comportamento analogo all'interno di uno stesso processo \textit{duplicando} -un file descriptor. Per far questo si usa la funzione \func{dup} il cui +un file descriptor. Per far questo si usa la funzione \funcd{dup} il cui prototipo è: \begin{prototype}{unistd.h}{int dup(int oldfd)} Crea una copia del file descriptor \param{oldfd}. @@ -956,8 +956,8 @@ restituito alla chiamata di \func{dup}, come primo file descriptor disponibile. Dato che questa è l'operazione più comune, è prevista una diversa versione -della funzione, \func{dup2}, che permette di specificare esplicitamente qual'è -il valore di file descriptor che si vuole avere come duplicato; il suo +della funzione, \funcd{dup2}, che permette di specificare esplicitamente +qual'è il valore di file descriptor che si vuole avere come duplicato; il suo prototipo è: \begin{prototype}{unistd.h}{int dup2(int oldfd, int newfd)} @@ -1004,7 +1004,7 @@ funzionalit (vedi \secref{sec:file_locking}).} Per queste operazioni di manipolazione e di controllo su proprietà e -caratteristiche un file descriptor, viene usata la funzione \func{fcntl}, il +caratteristiche un file descriptor, viene usata la funzione \funcd{fcntl}, il cui prototipo è: \begin{functions} \headdecl{unistd.h} @@ -1093,9 +1093,9 @@ valori valore zero indica di usare il segnale predefinito, \const{SIGIO}. Un altro valore (compreso lo stesso \const{SIGIO}) specifica il segnale voluto; l'uso di un valore diverso da zero permette inoltre, se si è installato il - manipolatore del segnale come \var{sa\_sigaction} usando + gestore del segnale come \var{sa\_sigaction} usando \const{SA\_SIGINFO}, (vedi \secref{sec:sig_sigaction}), di rendere - disponibili al manipolatore informazioni ulteriori informazioni riguardo il + disponibili al gestore informazioni ulteriori informazioni riguardo il file che ha generato il segnale attraverso i valori restituiti in \struct{siginfo\_t} (come vedremo in \secref{sec:file_asyncronous_io}).\footnote{i due comandi \const{F\_SETSIG} @@ -1137,7 +1137,7 @@ interfaccia astratta (un caso tipico porta seriale, o le dimensioni di un framebuffer). Per questo motivo nell'architettura del sistema è stata prevista l'esistenza -di una funzione apposita, \func{ioctl}, con cui poter compiere le operazioni +di una funzione apposita, \funcd{ioctl}, con cui poter compiere le operazioni specifiche di ogni dispositivo particolare, usando come riferimento il solito file descriptor. Il prototipo di questa funzione è: \begin{prototype}{sys/ioctl.h}{int ioctl(int fd, int request, ...)}