heap, i dati ed il testo del processo corrente con un nuovo programma letto da
disco.
-Con \func{exec} si chiude il cerchio delle funzioni su cui si basa il
-controllo dei processi in unix: con \func{fork} si crea un nuovo processo, con
-\func{exec} si avvia un nuovo programma, con \func{exit} e\func{wait} si
-effettua e si gestisce la conclusione dei programmi.
-
Ci sono sei diverse versioni di \func{exec} (per questo la si è chiamata
famiglia di funzioni) che possono essere usate per questo compito, che in
realtà (come mostrato in \figref{fig:proc_exec_relat}), costituiscono un
-front-end a \func{execve}. Il suo prototipo è:
+front-end a \func{execve}. Il prototipo di quest'utiltima è:
\begin{prototype}{unistd.h}
{int execve(const char * filename, char * const argv [], char * const envp[])}
montato in \cmd{noexec}, oppure non è un file normale o un interprete.
\item \macro{EPERM} il file ha i bit \acr{suid} o \acr{sgid} ma l'utente non
è root o il filesystem è montato con \cmd{nosuid}, oppure
- \item \macro{ENOEXEC}
- \item \macro{ENOENT}
- \item \macro{ENOTDIR}
- \item \macro{ETXTBSY}
- \item \macro{ENFILE}
- \item \macro{EMFILE}
- \item \macro{EINVAL}
- \item \macro{EISDIR}
- \item \macro{ELIBBAD}
+ \item \macro{ENOEXEC} il file è in un formato non eseguibile o non
+ riconosciuto come tale, o compilato per un'altra architettura.
+ \item \macro{ENOENT} il file o una delle librerie dinamiche o l'inteprete
+ necessari per eseguirlo non esistono.
+ \item \macro{ETXTBSY} L'eseguibile è aperto in scrittura da uno o più
+ processi.
+ \item \macro{EINVAL} L'eseguibile ELF ha più di un segmento
+ \macro{PF\_INTERP}, cioè chiede di essere eseguito da più di un interprete.
+ \item \macro{ELIBBAD} Un interprete ELF non è in un formato riconoscibile.
\end{errlist}
- ed inoltre anche \macro{EFAULT}, \macro{ENOMEM}, \macro{EIO}, \macro{ENAMETOOLONG}, \macro{E2BIG}, \macro{ELOOP}.
+ ed inoltre anche \macro{EFAULT}, \macro{ENOMEM}, \macro{EIO},
+ \macro{ENAMETOOLONG}, \macro{E2BIG}, \macro{ELOOP}, \macro{ENOTDIR},
+ \macro{ENFILE}, \macro{EMFILE}.
\end{prototype}
+Le altre funzioni della famiglia servono per fornire all'utente una serie
+possibile di diverse interfacce per la creazione di un nuovo processo.
+
+
+Con \func{exec} si chiude il cerchio delle funzioni su cui si basa il
+controllo dei processi in unix: con \func{fork} si crea un nuovo processo, con
+\func{exec} si avvia un nuovo programma, con \func{exit} e \func{wait} si
+effettua e si gestisce la conclusione dei programmi.
\section{Il controllo di accesso}