#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

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);
}