aboutsummaryrefslogtreecommitdiff
path: root/aufgabe3/conv.c
diff options
context:
space:
mode:
authorThorsten Töpper <atsutane@freethoughts.de>2010-12-31 20:30:44 +0100
committerThorsten Töpper <atsutane@freethoughts.de>2010-12-31 20:30:44 +0100
commit78ba3b87b0526c2a783fd19cb720a15ea464b9b5 (patch)
tree2613361bccce9f9936a89269c13959f5db7ff468 /aufgabe3/conv.c
parent43d16388f5ab5ec87f2373f10ae9a648c3464c3b (diff)
downloadprozesskommunikation-78ba3b87b0526c2a783fd19cb720a15ea464b9b5.tar.gz
prozesskommunikation-78ba3b87b0526c2a783fd19cb720a15ea464b9b5.tar.bz2
Aufgabe 3: conv weitgehend fertiggestellt
* Makefile um Bibliothekslink erweitert * queue.h an simples Modell mit 3 Queues angepasst.
Diffstat (limited to 'aufgabe3/conv.c')
-rw-r--r--aufgabe3/conv.c40
1 files changed, 38 insertions, 2 deletions
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 <stdlib.h>
#include <stdio.h>
#include <unistd.h>
+#include <string.h>
#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);
}