From 78ba3b87b0526c2a783fd19cb720a15ea464b9b5 Mon Sep 17 00:00:00 2001 From: Thorsten Töpper Date: Fri, 31 Dec 2010 20:30:44 +0100 Subject: Aufgabe 3: conv weitgehend fertiggestellt * Makefile um Bibliothekslink erweitert * queue.h an simples Modell mit 3 Queues angepasst. --- aufgabe3/conv.c | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) (limited to 'aufgabe3/conv.c') diff --git a/aufgabe3/conv.c b/aufgabe3/conv.c index 35b7d33..9ca90f8 100644 --- a/aufgabe3/conv.c +++ b/aufgabe3/conv.c @@ -5,20 +5,56 @@ #include #include #include +#include #include "queue.h" void conv() { int random_number = 0; + mqd_t log; + mqd_t statistic; + size_t message_size = sizeof(int)*2+1; + char *msg_one, *msg_two; - sprintf(stderr, "conv() was started"); + /* + * Message Queues zur Kommunikation mit dem log + * und dem statstic Prozess öffnen. + */ + log = mq_open(MQ_TO_LOG, O_WRONLY); + statistic = mq_open(MQ_TO_STATISTIC, O_WRONLY); + if ((log == -1) || (statistic == -1)) { + perror("conv() mq_open"); + exit(EXIT_FAILURE); + } for (;;) { - rand(); + random_number = rand(); + + msg_one = calloc(1, message_size); + msg_two = calloc(1, message_size); + + /* Message im Hexadezimalformat generieren. */ + sprintf(msg_one, "%x", random_number); + sprintf(msg_two, "%x", random_number); + + printf("conv:\t%s\t\t%s\n", msg_one, msg_two); +// fgetc(stdin); + + /* Message sowohl in die Queue zum log Prozess als auch + * in die Queue zum statistic Prozess schreiben. + */ + if ((mq_send(log, msg_one, strlen(msg_one)+1, 0) == -1) || + mq_send(statistic, msg_two, strlen(msg_two)+1, 0) == -1){ + perror("conv() mq_send"); + exit(EXIT_FAILURE); + } + } } void conv_cleanup() { printf("conv cleanup\n"); + mq_unlink(MQ_TO_LOG); + mq_unlink(MQ_TO_STATISTIC); _exit(EXIT_SUCCESS); } -- cgit v1.2.3-70-g09d2