From a0685b1f6b90b29d37f6f45c2279a837ae9ccd63 Mon Sep 17 00:00:00 2001 From: Thorsten Töpper Date: Mon, 3 Jan 2011 01:14:20 +0100 Subject: Aufgabe 3: conv.c Speicherfehler beseitigt, Code lesbarer gestaltet. --- aufgabe3/conv.c | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) (limited to 'aufgabe3') diff --git a/aufgabe3/conv.c b/aufgabe3/conv.c index 9ca90f8..6f4890c 100644 --- a/aufgabe3/conv.c +++ b/aufgabe3/conv.c @@ -9,12 +9,13 @@ #include "queue.h" +char *message; + 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; + /* * Message Queues zur Kommunikation mit dem log @@ -27,24 +28,25 @@ void conv() { exit(EXIT_FAILURE); } + /* + * Speicher für Nachricht allokieren. + */ + if ((message = calloc(1, MQ_MSG_SIZE_SEND)) == NULL) { + perror("conv()"); + exit(EXIT_FAILURE); + } + for (;;) { 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); + /* Zufallszahl ins Hexadezimalformat konvertieren. */ + sprintf(message, "%x", random_number); - /* Message sowohl in die Queue zum log Prozess als auch + /* Nachricht 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){ + if ((mq_send(log, message, MQ_MSG_SIZE_SEND, 0) == -1) || + mq_send(statistic, message, MQ_MSG_SIZE_SEND, 0) == -1){ perror("conv() mq_send"); exit(EXIT_FAILURE); } @@ -54,6 +56,7 @@ void conv() { void conv_cleanup() { printf("conv cleanup\n"); + free(message); mq_unlink(MQ_TO_LOG); mq_unlink(MQ_TO_STATISTIC); _exit(EXIT_SUCCESS); -- cgit v1.2.3-70-g09d2