Chiarimento sul fork

di il
5 risposte

Chiarimento sul fork

Ciao a tutti. ho appena finito di studiare il fork ma mi rimangono ancora dei dubbi...
il fork() è una funzione che duplica un processo...
in questo caso:
#include <stdio.h>
#include <unistd.h>
int main(int argc,char* argv)
{
printf ("1\n");
if (fork()==0)
{
printf ("2\n");
fork();
printf ("3\n");
}
else
wait();
printf ("4\n");
}
l'output sarebbe...
1
2
3
3
4
è giusto? ve lo chiedo perchè questa funziona va soltanto sotto linux e avendo windows non posso verificare se il risultato è questo...
grazie mille a tutti in anticipo

5 Risposte

  • Re: Chiarimento sul fork

    Copia ed incolla (anche correggi)
  • Re: Chiarimento sul fork

    Cosa devo correggere? questo è il codice di un esame universitario quindi non penso che sia sbagliato....
    1
    2
    3
    4
    1
    2
    3
    4
    1
    4

    questo sarebbe l'output datomi dal tuo sito il che è impossibile... come te lo spieghi?
  • Re: Chiarimento sul fork

    cosa devo correggere? questo è il codice di un esame universitario quindi non penso che sia sbagliato....
    caspita... meno male! 
    1) argv è un array di stringhe
    2) wait non passa nessun parametro e non è neanche definito
    3) manca il return del main
    Questi sono warning che il compilatore (gcc 4.3.4) ti ha detto prima dell'out.

    A questo aggiungo che la seconda fork non controlla quello che ritorna se parent, child or non valido... e come tu ben saprai non è definito chi arriverà per primo alla successiva printf. Se hai dubbi controlla con getpid(). 

    Per il resto vedi tu, ma sappi che stavi compilando in Linux.


    Auguri
    Max
  • Re: Chiarimento sul fork

    Scusa l'ignoranza ma non ho capito in definitiva l'output giusto! se è un esame, non penso che abbia problemi nell'essere risolto seno non avrebbe senso... però boh!
  • Re: Chiarimento sul fork

    Se l'hai scopiazzato male ti rispondi da solo altrimenti il tuo prof dovrebbe dimettersi

    Max
Devi accedere o registrarti per scrivere nel forum
5 risposte