#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/types.h>

int main()
{
	int pid;
	int mypipe[2];

	if ( pipe(mypipe) == -1 )
	{
		printf( "Non mi crea la pipe\n" );
		printf( "errno == %d\n", errno );
		printf( "significa: %s\n", strerror(errno) );
		exit(1);
	}

	
	if ( (pid = fork()) == -1 )
	{
		printf( "Non mi forka\n" );
		printf( "errno == %d\n", errno );
		printf( "significa: %s\n", strerror(errno) );
		exit(1);
	}

	if ( pid != 0 )
	{
		char s[100];
		s[0]='\0';
		
		while( strcmp( "fine", s ) != 0 )
		{
			scanf( "%s", s );
			write( mypipe[1], s, strlen(s) );
		}
	}
	else
	{
		char s[100];
		
		while (1)
		{
			int n;
			n = read( mypipe[0], s, 99 );
			s[n]='\0';
			printf( "%s", s );
			fflush( stdout );
		}
	}
}
