#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define BUF 8192

void an_den_drucker(char *text)
{
 FILE *p;
/*Pipe zum Tool lpr erstellen zum Schreiben auf lpr*/
 p=popen("lpr","w");
 if(p == NULL)
  {
    fprintf(stderr,"Konnte keine Pipe zu \'lpr\' erstellen!!\n");
    exit(0);
  }
 /*An den Drucker schreiben*/
 printf("Sende Auftrag an den Drucker......\n");
 fprintf(p, "%s", text);
 fflush(p);
 pclose(p);
}


int main()
{
  char puffer[BUF], inhalt[BUF];
  int fd,n;
  inhalt[0]='\0';

  if(mkfifo("fifo1.1", O_RDWR) < 0)
   {
    fprintf(stderr,"Konnte keine FIFO erzeugen!!\n");
    exit(0);
   }
  /*Empfänger ließt nur aus der FIFO*/
  fd=open("fifo1.1", O_RDONLY);
  if(fd == -1)
   {
     perror("open : ");
     exit(0);
   }
  while(1) /*Endlosschleife*/
   {
    if(n=read(fd,puffer,BUF))
      an_den_drucker(puffer);
    sleep(2);
   }

 return 0;
}