From: Simone Piccardi Date: Mon, 22 Oct 2001 19:48:52 +0000 (+0000) Subject: Estetica X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=commitdiff_plain;h=a54f1625cb963103b34a49e58bab1c2bc6028148;p=gapil.git Estetica --- diff --git a/gapil.tex b/gapil.tex index 6e7bfe3..a6f2327 100644 --- a/gapil.tex +++ b/gapil.tex @@ -1,4 +1,4 @@ -%% +%% %% GaPiL : Guida alla Programmazione in Linux %% %% S. Piccardi Oct. 2000 diff --git a/prochand.tex b/prochand.tex index ef6c064..8da07e6 100644 --- a/prochand.tex +++ b/prochand.tex @@ -377,6 +377,7 @@ periodo di attesa. 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 @@ -393,6 +394,7 @@ Child 3, parent 1963, exiting 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 @@ -431,6 +433,7 @@ Un secondo aspetto molto importante nella creazione dei processi figli 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 @@ -457,6 +460,7 @@ Go to next child 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 @@ -660,6 +664,7 @@ avr 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 @@ -676,6 +681,7 @@ Go to next 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 @@ -705,6 +711,7 @@ condizione: lanciamo il comando \cmd{forktest} in background, indicando al 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 @@ -715,6 +722,7 @@ otterremo: 571 pts/0 Z 0:00 [forktest ] 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.