Originariamente inviato da aspire1982
ragazzi non ho capito il perchè del comportamento.....quando eseguo la prima fork pid =0 ma quindi le istruzioni di if(!pid) sono eseguite mentre come regola quelle dell'else non dovrebbero essere eseguite invece le esegue a perchè?
Beh, se usi la fork è così!! Il processo si "biforca" (mica per niente la funzione ha quel nome ....).
Quando la fork viene eseguita viene creato il processo figlio e quando ritorna, ritorna da entrambi i processi padre e figlio, con valori di ritorno diversi chiaramente. Se tutto va bene e senza errori, chiaramente, altrimenti ritorna -1 senza aver creato il processo figlio.

Immagina la chiamata alla fork ... in cui c'è solo il processo padre. Immagina poi di "vedere" il tuo sorgente "sdoppiato" ... quando la fork ritorna, lo fa su 2 fronti: sia nel processo padre che in quello figlio. Ritornando però valori differenti possono prendere 2 strade diverse.