Se eseguiamo il comando senza specificare attese (come si può notare in
\texttt{\small 17--19} i valori di default specificano di non attendere),
otterremo come output sul terminale:
+\footnotesize
\begin{verbatim}
[piccardi@selidor sources]$ ./forktest 3
Process 1963: forking 3 child
Spawned 3 child, pid 1966
Go to next child
\end{verbatim} %$
+\normalsize
Esaminiamo questo risultato: una prima conclusione che si può trarre è non si
può dire quale processo fra il padre ed il figlio venga eseguito per
quello dell'interazione dei vari processi con i file; per illustrarlo meglio
proviamo a redirigere su un file l'output del nostro programma di test, quello
che otterremo è:
+\footnotesize
\begin{verbatim}
[piccardi@selidor sources]$ ./forktest 3 > output
[piccardi@selidor sources]$ cat output
Spawned 3 child, pid 1970
Go to next child
\end{verbatim}
+\normalsize
che come si vede è completamente diverso da quanto ottenevamo sul terminale.
Il comportamento delle varie funzioni di interfaccia con i file è analizzato
di terminazione. Come verifica di questo comportamento possiamo eseguire il
comando \cmd{forktest} imponendo a ciascun processo figlio due
secondi di attesa prima di uscire, il risultato è:
+\footnotesize
\begin{verbatim}
[piccardi@selidor sources]$ ./forktest -c2 3
Process 1972: forking 3 child
Child 2, parent 1, exiting
Child 1, parent 1, exiting
\end{verbatim}
+\normalsize
come si può notare in questo caso il processo padre si conclude prima dei
figli, tornando alla shell, che stampa il prompt sul terminale: circa due
secondi dopo viene stampato a video anche l'output dei tre figli che
processo padre di aspettare 10 secondi prima di uscire; in questo caso, usando
\cmd{ps} sullo stesso terminale (prima dello scadere dei 10 secondi)
otterremo:
+\footnotesize
\begin{verbatim}
[piccardi@selidor sources]$ ps T
PID TTY STAT TIME COMMAND
571 pts/0 Z 0:00 [forktest <defunct>]
572 pts/0 R 0:00 ps T
\end{verbatim} %$
+\normalsize
e come si vede, dato che non si è fatto nulla per riceverne lo stato di
terminazione, i tre processi figli sono ancora presenti pur essendosi
conclusi, con lo stato di zombie e l'indicazione che sono stati terminati.