#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <unistd.h>

#define MSGSIZE 256


int main()
{
  int pid, j,c;
  int piped[2];
  //char* str[MSGSIZE]={"Hello 1","Hello 2","Hello 3","Hello 4"};
  //char inpbuf[MSGSIZE];

  /* 
     Apre la pipe creando due file descriptor, 
     uno per la lettura e l'altro per la scrittura
     (vengono memorizzati nell'array piped[]) 
  */
  if (pipe(piped) < 0)
    exit(1);

  if ((pid = fork()) < 0)
    exit(2);
  else if (pid == 0)  /* figlio, che ha una copia di piped[] */
    {
      close(piped[1]);
      for (j = 1; j <= 10; j++)
	{
	  //read(piped[0], inpbuf, MSGSIZE);
	  read(piped[0],&c, sizeof (int));
	  printf("Figlio: ho letto dalla pipe il numero %d\n", c);
	}
      exit(0);
    }
  else  /* padre */
    {
      close(piped[0]);
      for (j = 1; j <= 10; j++) 
       	{
	  //write(piped[1], str[j], MSGSIZE);
	  write(piped[1], &j, sizeof (int));
	  sleep(1);
	}
      exit(0);
    }
}
