From 0c9d712a77bbede4808142944776d35f502bffa7 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Mon, 6 Dec 2010 19:55:19 +0100 Subject: IPC implementiert MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hat noch einen Bug, sollte aber als Beispiel für die anderen Aufgaben gut genug sein. --- aufgabe4/conv.c | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) (limited to 'aufgabe4/conv.c') diff --git a/aufgabe4/conv.c b/aufgabe4/conv.c index efa8200..919965c 100644 --- a/aufgabe4/conv.c +++ b/aufgabe4/conv.c @@ -1,18 +1,44 @@ /* * vim:ts=4:sw=4:expandtab + * + * © 2010 Michael Stapelberg * */ #include #include #include +#include "queue.h" + +/* + * Conv-Prozess. Generiert Zufallszahlen und schickt sie an den Log-Prozess + * sowie an den Statistik-Prozess. + * + */ void conv() { - printf("conv started\n"); + int number; + struct msg *first; + struct msg *second; for (;;) { + /* Zufallszahl generieren */ + number = rand(); + + /* Zahl zweimal in die Queue schreiben: Einmal zum loggen, einmal für + * den Statistik-Prozess */ + first = queue_write(D_CONV_TO_LOG, number); + second = queue_write(D_CONV_TO_STAT, number); + + /* Warten, bis die Zufallszahl aus der Queue geholt wurde */ + while (first->dir == D_CONV_TO_LOG || + second->dir == D_CONV_TO_STAT) + usleep(1); } } +/* + * Cleanup-Funktion. Beendet den Prozess. + * + */ void conv_cleanup() { - printf("conv cleanup\n"); _exit(EXIT_SUCCESS); } -- cgit v1.2.3-70-g09d2