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

int main(){

	int tube[2];
	int ent=0, pid, tmp;

	if (pipe(tube)<0) {
		perror ("erreur ouverture pipe"); exit(1);
	}
	if ((pid=fork())<0) {
		perror ("erreur fork"); exit(1);
	}

	if (pid != 0) {//père
		if (close(tube[1])<0) exit(1); /*père n'écrit pas dans tube */
			
		while(read(tube[0],&tmp,sizeof(int))==sizeof(int)){
			printf("reçu fils : %d\n", tmp);
			ent += tmp;
		}
		if (close(tube[0])<0) exit(1); /*père ne lit plus dans tube1 */
		if (wait(&pid)<0) exit(1);
		printf("Somme totale : %d\n", ent);
	}
	else { //fils
		if (close(tube[0])<0) exit(1); /*fils1 ne lit pas dans tube1 */
		for(int i=0;i<10;i++){
			tmp = rand()%100;
			printf("Fils génère %d\n", tmp);
			if (write(tube[1], &tmp, sizeof(int))<0) exit(1);
			sleep(0.5);
		}
		if (close(tube[1])<0) exit(1); /*fils1 n'écrit plus dans tube1 */
	}
}