X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=process.tex;h=d23e54f01cecde1c041d75116a2399c8129261d8;hp=554f4d6a49c4e7e6a5e23b55fa6b03d43eed38de;hb=0c9d95dfc21869e96f8a3e3ab8111c842e85a1f9;hpb=ce9e7bc52908e92783f1b88faf090e93b06fd320 diff --git a/process.tex b/process.tex index 554f4d6..d23e54f 100644 --- a/process.tex +++ b/process.tex @@ -108,7 +108,7 @@ uno stato di uscita uguale a zero, che verrebbe interpretato come un successo. In \file{stdlib.h} sono definite, seguendo lo standard POSIX, le due macro \macro{EXIT\_SUCCESS} e \macro{EXIT\_FAILURE}, da usare sempre per specificare lo stato di uscita di un processo. In Linux esse sono poste rispettivamente ai -valori di tipo \type{int} 0 e 1. +valori di tipo \ctyp{int} 0 e 1. \subsection{Le funzioni \func{exit} e \func{\_exit}} @@ -341,7 +341,7 @@ programma C viene suddiviso nei seguenti segmenti: \item Il segmento dei dati o \textit{data segment}. Contiene le variabili globali (cioè quelle definite al di fuori di tutte le funzioni che compongono il programma) e le variabili statiche (cioè quelle dichiarate con - l'attributo \type{static}). Di norma è diviso in due parti. + l'attributo \ctyp{static}). Di norma è diviso in due parti. La prima parte è il segmento dei dati inizializzati, che contiene le variabili il cui valore è stato assegnato esplicitamente. Ad esempio @@ -1131,7 +1131,7 @@ ambiente; il suo prototipo \end{functions} \noindent questa funzione elimina ogni occorrenza della variabile specificata; se essa non esiste non succede nulla. Non è prevista (dato che la funzione è -\type{void}) nessuna segnalazione di errore. +\ctyp{void}) nessuna segnalazione di errore. Per modificare o aggiungere una variabile di ambiente si possono usare sia \func{setenv} che \func{putenv}. La prima permette di specificare @@ -1151,7 +1151,7 @@ invece esiste il suo valore sar seguendo il comportamento di BSD4.4; dato che questo può dar luogo a perdite di memoria e non rispetta lo standard. Il comportamento è stato modificato a partire dalle 2.1.2, eliminando anche, sempre in conformità a SUSv2, - l'attributo \type{const} dal prototipo.} \param{string} alla lista delle + l'attributo \ctyp{const} dal prototipo.} \param{string} alla lista delle variabili di ambiente; pertanto ogni cambiamento alla stringa in questione si riflette automaticamente sull'ambiente, e quindi si deve evitare di passare a questa funzione una variabile automatica (per evitare i problemi esposti in @@ -1261,13 +1261,13 @@ del vettore \var{argv} passato al nuovo processo). Lo standard ISO C richiede inoltre che l'ultimo degli argomenti fissi sia di tipo \textit{self-promoting}\footnote{il linguaggio C prevede che quando si mescolano vari tipi di dati, alcuni di essi possano essere \textsl{promossi} - per compatibilità; ad esempio i tipi \type{float} vengono convertiti - automaticamente a \type{double} ed i \type{char} e gli \type{short} ad - \type{int}. Un tipo \textit{self-promoting} è un tipo che verrebbe promosso + per compatibilità; ad esempio i tipi \ctyp{float} vengono convertiti + automaticamente a \ctyp{double} ed i \ctyp{char} e gli \ctyp{short} ad + \ctyp{int}. Un tipo \textit{self-promoting} è un tipo che verrebbe promosso a sé stesso.} il che esclude array, puntatori a funzioni e interi di tipo -\type{char} o \type{short} (con segno o meno). Una restrizione ulteriore di +\ctyp{char} o \ctyp{short} (con segno o meno). Una restrizione ulteriore di alcuni compilatori è di non dichiarare l'ultimo parametro fisso come -\type{register}. +\ctyp{register}. Una volta dichiarata la funzione il secondo passo è accedere ai vari parametri quando la si va a definire. I parametri fissi infatti hanno un loro nome, ma @@ -1360,8 +1360,8 @@ In Linux gli argomenti dello stesso tipo sono passati allo stesso modo, sia che siano fissi sia che siano opzionali (alcuni sistemi trattano diversamente gli opzionali), ma dato che il prototipo non può specificare il tipo degli argomenti opzionali, questi verranno sempre promossi, pertanto nella ricezione -dei medesimi occorrerà tenerne conto (ad esempio un \type{char} verrà visto da -\macro{va\_arg} come \type{int}). +dei medesimi occorrerà tenerne conto (ad esempio un \ctyp{char} verrà visto da +\macro{va\_arg} come \ctyp{int}). Uno dei problemi che si devono affrontare con le funzioni con un numero @@ -1394,7 +1394,7 @@ Per questo una delle regole fondamentali della programmazione in C all'uscita di una funzione non deve restare nessun riferimento alle variabili locali; qualora sia necessario utilizzare variabili che possano essere viste anche dalla funzione chiamante queste devono essere allocate esplicitamente, o -in maniera statica (usando variabili di tipo \type{static} o \type{extern}), o +in maniera statica (usando variabili di tipo \ctyp{static} o \ctyp{extern}), o dinamicamente con una delle funzioni della famiglia \func{malloc}. \subsection{Il controllo di flusso non locale}