Una delle caratteristiche essenziali di unix (che esamineremo in dettaglio più
avanti) è che ogni processo può a sua volta generare altri processi figli
Una delle caratteristiche essenziali di unix (che esamineremo in dettaglio più
avanti) è che ogni processo può a sua volta generare altri processi figli
Ogni processo viene identificato dal sistema da un numero identificativo
unico, il \textit{process id} o \textit{pid}. Questo viene assegnato in forma
Ogni processo viene identificato dal sistema da un numero identificativo
unico, il \textit{process id} o \textit{pid}. Questo viene assegnato in forma
Tutti i processi inoltre portano traccia del pid del genitore, chiamato in
genere \textit{ppid} (da \textit{Parente Process Id}). Questi identificativi
possono essere ottenuti da un programma usando le funzioni:
Tutti i processi inoltre portano traccia del pid del genitore, chiamato in
genere \textit{ppid} (da \textit{Parente Process Id}). Questi identificativi
possono essere ottenuti da un programma usando le funzioni:
-\begin{itemize}
- \item \texttt{pid\_t getpid(void)} restituisce il pid del processo corrente.
-
- \item \texttt{pid\_t getppid(void)} restituisce il pid del padre del processo
+\begin{functions}
+\headdecl{sys/types.h}
+\headdecl{unistd.h}
+\funcdecl{pid\_t getpid(void)} restituisce il pid del processo corrente.
+\funcdecl{pid\_t getppid(void)} restituisce il pid del padre del processo
basata a sua volta sulla system call \texttt{clone}, che viene usata anche per
generare i \textit{thread}. Il processo figlio creato dalla \textit{fork} è
una copia identica del processo processo padre, solo che ha un suo pid
basata a sua volta sulla system call \texttt{clone}, che viene usata anche per
generare i \textit{thread}. Il processo figlio creato dalla \textit{fork} è
una copia identica del processo processo padre, solo che ha un suo pid
terminazione del processo.
Quando un processo ha concluso il suo compito o ha incontrato un errore non
terminazione del processo.
Quando un processo ha concluso il suo compito o ha incontrato un errore non
-risolvibile esso può essere terminato con la funzione \texttt{exit} (la
-questione è più complessa ma ci torneremo più avanti). La vita del processo
+risolvibile esso può essere terminato con la funzione \texttt{exit} (si veda
+quanto discusso in \secref{sec:proc_termination}). La vita del processo
però termina solo quando viene chiamata la quando la sua conclusione viene
ricevuta dal processo padre, a quel punto tutte le risorse allocate nel
sistema ad esso associate vengono rilasciate.
Avere due processi che eseguono esattamente lo stesso codice non è molto
però termina solo quando viene chiamata la quando la sua conclusione viene
ricevuta dal processo padre, a quel punto tutte le risorse allocate nel
sistema ad esso associate vengono rilasciate.
Avere due processi che eseguono esattamente lo stesso codice non è molto
un compito specifico (ad esempio gestire una connessione dopo che questa è
stata stabilita), o fargli eseguire (come fa la shell) un altro programma. Per
questo si usa la seconda funzione fondamentale per programmazione coi processi
che è la \texttt{exec}.
Il programma che un processo sta eseguendo si chiama immagine del processo
un compito specifico (ad esempio gestire una connessione dopo che questa è
stata stabilita), o fargli eseguire (come fa la shell) un altro programma. Per
questo si usa la seconda funzione fondamentale per programmazione coi processi
che è la \texttt{exec}.
Il programma che un processo sta eseguendo si chiama immagine del processo
di caricare un'altro programma da disco sostituendo quest'ultimo alla process
image corrente, questo fa si che la precedente immagine venga completamente
cancellata e quando il nuovo programma esce anche il processo termina, senza
ritornare alla precedente immagine.
di caricare un'altro programma da disco sostituendo quest'ultimo alla process
image corrente, questo fa si che la precedente immagine venga completamente
cancellata e quando il nuovo programma esce anche il processo termina, senza
ritornare alla precedente immagine.
particolari con caratteristiche uniche rispetto a tutte le altre, infatti la
prima ritorna due volte (nel processo padre e nel figlio) mentre la seconda
non ritorna mai (in quanto con essa viene eseguito un altro programma).
particolari con caratteristiche uniche rispetto a tutte le altre, infatti la
prima ritorna due volte (nel processo padre e nel figlio) mentre la seconda
non ritorna mai (in quanto con essa viene eseguito un altro programma).
Va messo qui tutta la storia su effective, real, saved uid, e pure le cose di
Va messo qui tutta la storia su effective, real, saved uid, e pure le cose di