//Uebersetzung mit: // gcc -o Server Server.c // In diesem Bespielprogramm rechnet der Server -etwas ganz einfaches..- das // Qadrat einer gegebenen Zahl aus. // Der Server kann in Hintergrund mit dem Befehl // ./Server& // gestartet werden. Mit "./Klient 0" wird der Server gestoppt. #include #include #include #include "header.h" int main(void) { int fd, fd1; /* Deskriptoren fuer den Server- und Klientfifo */ char s[15]; /* Name der Klientfifo; Bsp. fifo_143 */ Mesg t; /* Die "Message" */ mkfifo("serverfifo", S_IFIFO|0666); /* Der Server erzeugt sen eigenes Fifo */ fd = open("serverfifo", O_RDONLY); /* "serverfifo" wird fuer Lesen geoeffnet */ do /* Schleife...bis der Server ein 0 Wert bekommt */ { while(read(fd, &t, sizeof(t))>0){ /* Eine Message wird gelesen */ // printf("%d gelesen\n",t.nr); t.nr = t.nr * t.nr; sprintf(s, "fifo_%d", t.pid); /* Mit der Hilfe von pid wird der Name der Klientfio bestimmt */ fd1 = open(s, O_WRONLY); /* Klientfifo wird fuer schreiben geoeffnet */ write(fd1, &t, sizeof(t)); close(fd1); } /* Die Daten sind geschickt, Klientfifo kann geschlossen werden */ } while (t.nr); close(fd); /* serverfifo geschlossen */ unlink("serverfifo"); /* serverfifo geloescht */ exit(0); }