Pages: [1]   Go Down
Print
Author Topic: [Risolto] dubbio fork.c  (Read 1296 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
FReddy
Apprendista Forumista
**
Offline Offline

Posts: 367



« on: 22-06-2012, 09:40:57 »

Salve a tutti,

ho compilato il file fork.c, presente nella collezione di esempi del professore, e l'ho eseguito più volte in successione.

Qualcuno mi sa spiegare perché la restituzione del pid del padre, nella seconda riga di ogni output, in alcuni casi da il valore corretto ed in altri restituisce 1?

Ecco l'output:

Quote
freddy@freddy:~/Scrivania/sistem_operativi/esempi_programmazione_unix$ ./fork
PID del processo iniziale: 3904
Sono il processo PADRE [3904] e mio figlio ha PID 3905.
Sono il processo FIGLIO [3905] e mio padre ha PID 1.
freddy@freddy:~/Scrivania/sistem_operativi/esempi_programmazione_unix$ ./fork
PID del processo iniziale: 3919
Sono il processo PADRE [3919] e mio figlio ha PID 3920.
Sono il processo FIGLIO [3920] e mio padre ha PID 3919.
freddy@freddy:~/Scrivania/sistem_operativi/esempi_programmazione_unix$ ./fork
PID del processo iniziale: 3921
Sono il processo PADRE [3921] e mio figlio ha PID 3922.
Sono il processo FIGLIO [3922] e mio padre ha PID 1.
freddy@freddy:~/Scrivania/sistem_operativi/esempi_programmazione_unix$ ./fork
PID del processo iniziale: 3923
Sono il processo PADRE [3923] e mio figlio ha PID 3924.
Sono il processo FIGLIO [3924] e mio padre ha PID 1.
freddy@freddy:~/Scrivania/sistem_operativi/esempi_programmazione_unix$ ./fork
PID del processo iniziale: 3925
Sono il processo PADRE [3925] e mio figlio ha PID 3926.
Sono il processo FIGLIO [3926] e mio padre ha PID 1.
freddy@freddy:~/Scrivania/sistem_operativi/esempi_programmazione_unix$ ./fork
PID del processo iniziale: 3927
Sono il processo PADRE [3927] e mio figlio ha PID 3928.
Sono il processo FIGLIO [3928] e mio padre ha PID 1.
freddy@freddy:~/Scrivania/sistem_operativi/esempi_programmazione_unix$ ./fork
PID del processo iniziale: 3929
Sono il processo PADRE [3929] e mio figlio ha PID 3930.
Sono il processo FIGLIO [3930] e mio padre ha PID 3929.
freddy@freddy:~/Scrivania/sistem_operativi/esempi_programmazione_unix$ ./fork
PID del processo iniziale: 3931
Sono il processo PADRE [3931] e mio figlio ha PID 3932.
Sono il processo FIGLIO [3932] e mio padre ha PID 3931.
freddy@freddy:~/Scrivania/sistem_operativi/esempi_programmazione_unix$ ./fork
PID del processo iniziale: 3933
Sono il processo PADRE [3933] e mio figlio ha PID 3934.
Sono il processo FIGLIO [3934] e mio padre ha PID 1.
freddy@freddy:~/Scrivania/sistem_operativi/esempi_programmazione_unix$ ./fork
PID del processo iniziale: 3935
Sono il processo PADRE [3935] e mio figlio ha PID 3936.
Sono il processo FIGLIO [3936] e mio padre ha PID 1.
freddy@freddy:~/Scrivania/sistem_operativi/esempi_programmazione_unix$ ./fork
PID del processo iniziale: 3937
Sono il processo PADRE [3937] e mio figlio ha PID 3938.
Sono il processo FIGLIO [3938] e mio padre ha PID 3937.
freddy@freddy:~/Scrivania/sistem_operativi/esempi_programmazione_unix$ ./fork
PID del processo iniziale: 3939
Sono il processo PADRE [3939] e mio figlio ha PID 3940.
Sono il processo FIGLIO [3940] e mio padre ha PID 1.
freddy@freddy:~/Scrivania/sistem_operativi/esempi_programmazione_unix$
« Last Edit: 22-06-2012, 11:24:04 by FReddy » Logged

Il presente è ora,
Il passato era ora,
Il futuro sarà ora.
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.475


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #1 on: 22-06-2012, 10:24:46 »

A volte per come sono schedulati i processi sulla tua macchina, può capitare che il padre muoia (termini) prima che il figlio abbia eseguito la sua invocazione di getppid. In tal caso, il processo figlio orfano viene immediatamente adottato come figlio dal processo init, che ha process id = 1.

Per evitare che capiti questa situazione, prova a mettere sleep (1) (sleep si trova in unistd.h) prima di exit (0).

Buona giornata .
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
FReddy
Apprendista Forumista
**
Offline Offline

Posts: 367



« Reply #2 on: 22-06-2012, 11:23:45 »

Grazie. Sei stato chiarissimo 
Logged

Il presente è ora,
Il passato era ora,
Il futuro sarà ora.
Pages: [1]   Go Up
Print
Jump to: