#include #include #include #include #include #include int main(){ FILE *fp; pid_t pid, ppid; int num,status,numscritti=0; if((fp=fopen("dati.dat","w+"))==NULL){ printf("Errore apertura file"); return 1; } printf("Pid del programma/processo padre %d\n",getpid()); pid=fork(); if(pid<0) { printf("Errore sulla generazione del processo figlio"); return 1; } if(pid==0){ srand(time(NULL)); do{ num=rand()%101; if(num!=0){ fwrite(&num,sizeof(int),1,fp); numscritti++; } }while(num!=0); printf("Num Scritti %d\n",numscritti); exit(numscritti); }else{ ppid=wait(&status); printf("Pid del figlio %d\n",ppid); if(WIFEXITED(status)){ printf("Valore restituito dal figlio %d\n",WEXITSTATUS(status)); rewind(fp); while(fread(&num,sizeof(int),1,fp)==1) printf("%d -",num); } else printf("Il figlio ha fallito l'esecuzione\n"); } fclose(fp); }