X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=prochand.tex;h=41d7a348c2e7a9702ea2f4a97d2786cc41e66d1f;hb=54d27b07aee6d293931ee274a3ede927f517f2cf;hp=b9cd6a7f653a70b2f819d52574d5e45983fcbb74;hpb=8bd624da6e63ebf1174e62846f5800ad98373d4d;p=gapil.git diff --git a/prochand.tex b/prochand.tex index b9cd6a7..41d7a34 100644 --- a/prochand.tex +++ b/prochand.tex @@ -208,12 +208,123 @@ 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