X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=intro.tex;h=13a5f4a7eff9bbecf2af8456b202c862f3e886cd;hp=f287e9c6b5e5503247913bca782c22d06c6b3250;hb=e65d10df4612dc4c8805b1beb7bef5e82e0a2b9a;hpb=827c08ae9cc068b139a45cf5e7c8763a654c1da5 diff --git a/intro.tex b/intro.tex index f287e9c..13a5f4a 100644 --- a/intro.tex +++ b/intro.tex @@ -201,29 +201,29 @@ esecuzione un programma di interfaccia (che pu terminale o una interfaccia grafica) che mette a disposizione dell'utente un meccanismo con cui questo può impartire comandi o eseguire altri programmi. -Ogni utente appartiene anche ad almeno un gruppo (\textit{group}), ma può -essere associato a più gruppi, questo permette di gestire i permessi di +Ogni utente appartiene anche ad almeno un gruppo (il cosiddetto +\textit{default group}), ma può essere associato ad altri gruppi (i +\textit{supplementary group}), questo permette di gestire i permessi di accesso ai file e quindi anche alle periferiche, in maniera più flessibile, definendo gruppi di lavoro, di accesso a determinate risorse, etc. L'utente e il gruppo sono identificati da due numeri (la cui corrispondenza ad -un nome in espresso in caratteri \`e inserita nei due files -\texttt{/etc/passwd} e \texttt{/etc/groups}). Questi numeri sono -l'\textit{user identifier}, detto in breve \textit{uid} e il \textit{group - identifier}, detto in breve \textit{gid} che sono quelli che identificano -l'utente di fronte al sistema. +un nome in espresso in caratteri è inserita nei due files \file{/etc/passwd} +e \file{/etc/groups}). Questi numeri sono l'\textit{user identifier}, detto +in breve \acr{uid} e il \textit{group identifier}, detto in breve \acr{gid} +che sono quelli che identificano l'utente di fronte al sistema. In questo modo il sistema è in grado di tenere traccia per ogni processo dell'utente a cui appartiene ed impedire ad altri utenti di interferire con esso. Inoltre con questo sistema viene anche garantita una forma base di sicurezza interna in quanto anche l'accesso ai file (vedi -\secref{sec:filedir_access_control}) è regolato da questo meccanismo di +\secref{sec:file_access_control}) è regolato da questo meccanismo di identificazione. -Un utente speciale del sistema è \textit{root}, il cui uid è zero. Esso +Un utente speciale del sistema è \textit{root}, il cui \acr{uid} è zero. Esso identifica l'amministratore del sistema, che deve essere in grado di fare -qualunque operazione; pertanto per l'utente root i meccanismi di controllo -descritti in precedenza sono disattivati. +qualunque operazione; pertanto per l'utente \textit{root} i meccanismi di +controllo descritti in precedenza sono disattivati. \section{Gli standard di unix e GNU/Linux} @@ -326,15 +326,24 @@ che c' Per riportare il tipo di errore il sistema usa la variabile globale \var{errno}\footnote{L'uso di una variabile globale può comportare alcuni problemi (ad esempio nel caso dei thread) ma lo standard ISO C consente - anche di definire \var{errno} come un \textit{modifible lvalue}, quindi su - può anche usare - + anche di definire \var{errno} come un \textit{modifiable lvalue}, quindi si + può anche usare una macro, e questo è infatti il modo usato da Linux per + renderla locale ai singoli thread }, definita nell'header \file{errno.h}, la variabile è in genere definita come \var{volatile} dato che può essere cambiata in modo asincrono da -un segnale (per una descrizione dei segnali si veda \secref{cha:signal}), ma +un segnale (per una descrizione dei segnali si veda \secref{cha:signals}), ma dato che un manipolatore di segnale scritto bene salva e ripristina il valore della varibile, di questo non è necessario preoccuparsi nella programmazione normale. +I valori che può assumere \var{errno} sono riportati in \capref{cha:errors}, +nell'header \file{errno.h} sono anche definiti i nomi simbolici per le +costanti numeriche che identificano i vari errori. In seguito faremo sempre +rifermento a tali valori, quando descriveremo i possibili errori restituiti +dalle funzioni. + +\subsection{Le funzioni \func{strerror} e \func{perror}} +\label{sec:intro_strerror} +