// Jarosław Ogrodnik Indeks:1234 Grupa:ID3

#include <stdio.h>
#include <unistd.h>
#include <string.h>

#define KOM     "BLAD\n"

int lacze[2];
char buf[100];
char buf2[100];
int f;
char x[100];
int y;
int z;

int main()
{

// Tworzenie lacza nienazwanego

  if (pipe(lacze) < 0)
  {
      write(STDERR_FILENO,KOM,strlen(KOM));
      return 1;
  }

// Powolanie procesu potomnego

  if ((f=fork()) == -1)  
     {	
             write(STDERR_FILENO,KOM,strlen(KOM));
             return(1);
     }
  else
    if (f == 0)
    {     
do	
	{
         // Kod procesu potomnego - piszacego do lacza


	close(lacze[0]);
        printf("Wprowadz tekst: ");
        fgets(x,100,stdin);
        x[strlen(x)-1]='\0';
        y=getpid();
        printf("Wyprowadzenie na stderr zawartosci wysylanego lacza (z potomka):\n ");
        sprintf(buf,"Ogrodnik, %s, %d",x,y);
        fputs(buf,stderr);

        printf("\n");

        write(lacze[1],buf,strlen(buf));
	
	sleep(2);
	} while(1);
	return(1);
    }

    else
    {                           

        // Kod procesu macierzystego - czytajacego z lacza
	do
	{

	close(lacze[1]);

        read(lacze[0],buf,100);
        z=getpid();
        sprintf(buf2,"%s, %d\n",buf,z);

        printf("Wyprowadzenie na stderr odczytanego lacza z PID procesu macierzystego:\n ");
        fputs(buf2,stderr);
        
    	} while(1);
	return(1);
    }
     
}


