#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main()
{
  struct stat attribut;

  unlink("fifo0001"); /*Falls fifo0001 schon vorhanden ist*/
/*Wir erzeugen eine FIFO*/
  if((mkfifo("fifo0001", O_RDWR)) == -1)
    {
      fprintf(stderr, "Konnte keine FIFO erzeugen.........\n");
      exit(0);
    }

  if(stat("fifo0001", &attribut) == -1)
    {
      fprintf(stderr, "Fehler bei fstat............\n");
      exit(0);
    }

  if(S_ISREG(attribut.st_mode))
      printf("fifo0001 ist eine reguläre Datei\n");
  else if(S_ISDIR(attribut.st_mode))
      printf("fifo0001 ist ein Verzeichnis\n");
  #ifdef S_ISSOCK
  else if(S_ISSOCK(attribut.st_mode))
      printf("fifo0001 ist ein Socket\n");
  #endif
  else if(S_ISFIFO(attribut.st_mode))
      printf("fifo0001 ist eine FIFO oder Pipe\n");
  else printf("Kann Dateiart nicht feststellen\n");

  return 0;
}