15/02/13 18:53
Dante.cpp
Ho trovato questo programma esempio su internet, e leggendolo mi son sorti dei dubbi...
Allora pid è l'identificativo del nuovo processo generato dalla chiamata a fork(), la riga 16 afferma che il figlio ha sempre il pid=0, mentre il padre lo ha sempre >0; quindi ogni padre puo avere solo un figlio?
#include <stdio.h> #include <unistd.h> int main() { int pid; int status; printf (“Sono il processo padre, il mio PID è %d\n”, getpid()); // Genero un nuovo processo pid=fork(); if (pid==1) // ERRORE! Non è stato possibile creare il nuovo if (pid==0) { // In questo caso la fork() ha ritornato 0, quindi qui ci scrivo il codice del figlio printf (“Sono il processo figlio di %d, il mio PID è %d\n”, getppid(), getpid()); exit(0); } if (pid>0) { // In questo caso la fork() ha ritornato un valore maggiore di 0, quindi qui scrivo il codice del processo padre printf (“Sono il processo padre e ho generato un processo figlio\n”); // Attendo che il processo figlio venga terminato, e salvo il suo valore di ritorno nella variabile status while ((pid=wait(&status)>0); // Dal valore di status ricavo il valore di ritorno del processo figliostatus = (status & 0xFF) >> 8; printf (“Il processo %d è terminato con status %d\n”, pid, status); } }
Allora pid è l'identificativo del nuovo processo generato dalla chiamata a fork(), la riga 16 afferma che il figlio ha sempre il pid=0, mentre il padre lo ha sempre >0; quindi ogni padre puo avere solo un figlio?
aaa