#include <errno.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>

extern int errno;

int main(int argc, char **argv)
{
  int fd, n=0;
  void *speicherberreich;
  struct stat attr;

  while(argv[++n] != NULL)
    {
      if(( fd=open(argv[n], O_RDWR)) < 0)
       {
          fprintf(stderr, "Konnte %s nicht öffnen!!!\n",argv[n]);
          continue; /*Wieder hoch zu while*/
        }
      if(fstat(fd, &attr) == -1)
        {
          fprintf(stderr,"Fehler bei fstat.......\n");
          continue; /*Wieder hoch zu while*/
         }

/*Achtung jetzt legen wir die Datei die wir mit fd spezifiert haben in den Arbeitsspeicher*/
     speicherberreich=mmap(0, attr.st_size, PROT_READ, MAP_SHARED, fd, 0);
     if(speicherberreich == ((caddr_t) -1))
      {
        fprintf(stderr, "%s: Fehler bei mmap mit der Datei %s\n",strerror(errno), argv[n]);
        continue; /*Hoch zu while*/
      }
 /*Jetzt ist die Datei die mit fd geöffnet wurde im Arbeitsspeicher */
    close(fd);
    if(write(STDOUT_FILENO, speicherberreich, attr.st_size) != attr.st_size)
          fprintf(stderr, "Fehler bei write\n");
    }/*Ende while*/
  exit(0);
}