aboutsummaryrefslogtreecommitdiff
path: root/aufgabe4/log.c
diff options
context:
space:
mode:
Diffstat (limited to 'aufgabe4/log.c')
-rw-r--r--aufgabe4/log.c30
1 files changed, 28 insertions, 2 deletions
diff --git a/aufgabe4/log.c b/aufgabe4/log.c
index 405cdbd..105f2d3 100644
--- a/aufgabe4/log.c
+++ b/aufgabe4/log.c
@@ -1,18 +1,44 @@
/*
* vim:ts=4:sw=4:expandtab
+ *
+ * © 2010 Michael Stapelberg
*
*/
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
+#include "queue.h"
+
+FILE *file;
+
+/*
+ * Logprozess. Schreibt die empfangenen Daten in eine Datei.
+ *
+ */
void log() {
- printf("log started\n");
- for (;;) {
+ /* Datei zum Schreiben öffnen */
+ if ((file = fopen("log.txt", "w")) == NULL) {
+ perror("fopen");
+ exit(EXIT_FAILURE);
+ }
+
+ while (1) {
+ /* Wir warten auf Nachrichten des CONV-Prozesses */
+ while (queue_get_dir() != D_CONV_TO_LOG)
+ usleep(1);
+
+ uint8_t data = queue_get_data();
+ fprintf(file, "%d\n", data);
}
}
+/*
+ * Cleanup-Funktion (wird als Signalhandler gesetzt). Schließt die Logdatei.
+ *
+ */
void log_cleanup() {
printf("log cleanup\n");
+ fclose(file);
_exit(EXIT_SUCCESS);
}