X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=prochand.tex;h=22da5c0194b660c71df60ba5a39403221ef5c9c3;hp=b9cd6a7f653a70b2f819d52574d5e45983fcbb74;hb=0697eab692e2d8e66f736e5be01648198aa83332;hpb=8bd624da6e63ebf1174e62846f5800ad98373d4d diff --git a/prochand.tex b/prochand.tex index b9cd6a7..22da5c0 100644 --- a/prochand.tex +++ b/prochand.tex @@ -208,13 +208,131 @@ ritorno della funzione fork figlio è zero; in questo modo il programma può identificare se viene eseguito dal padre o dal figlio. -Si noti come la funzione, caso unico che ne contraddistingue l'importanza, -ritorni \textbf{due} volte. Nel caso del padre viene restituito il \acr{pid} -del figlio in quanto potendo esservi più figli questo è il modo per poterne -tracciare la creazione, il figlio invece ha un unico padre (il cui \acr{pid} -può essere ottenuto con \func{getppid}, vista in \secref{sec:proc_pid}) e si -usa il valore nullo (che non può essere il \acr{pid} di nessun processo) - +\begin{figure}[!htb] + \footnotesize + \begin{lstlisting}{} +#include /* error definitions and routines */ +#include /* C standard library */ +#include /* unix standard library */ +#include /* standard I/O library */ +#include /* string functions */ + +/* Help printing routine */ +void usage(void); + +int main(int argc, char *argv[]) +{ +/* + * Variables definition + */ + int i; + int nchild; + pid_t pid; + + ... /* handling options */ + + /* There must be remaing parameters */ + if (optind == argc) { + usage(); + } + nchild = atoi(argv[optind]); + printf("Test for forking %d child\n", nchild); + /* loop to fork children */ + for (i=0; i