aboutsummaryrefslogtreecommitdiff
path: root/src/print_status_on_exit.c
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fl.fischer@fau.de>2019-01-15 15:53:45 +0100
committerFlorian Fischer <florian.fl.fischer@fau.de>2019-01-15 18:29:26 +0100
commit259fd2a64bf114907017fe286702218cdf13c8ca (patch)
treec018a3e1f7c6dfaab121f23ce25514d91eef4e93 /src/print_status_on_exit.c
parentf7e5eef592b2a70313bb0fac5f2e3ee42bd9f634 (diff)
downloadallocbench-259fd2a64bf114907017fe286702218cdf13c8ca.tar.gz
allocbench-259fd2a64bf114907017fe286702218cdf13c8ca.zip
move source code to src/
Diffstat (limited to 'src/print_status_on_exit.c')
-rw-r--r--src/print_status_on_exit.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/print_status_on_exit.c b/src/print_status_on_exit.c
new file mode 100644
index 0000000..1d72384
--- /dev/null
+++ b/src/print_status_on_exit.c
@@ -0,0 +1,37 @@
+#define _GNU_SOURCE
+#include <dlfcn.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+static void print_status(void)
+{
+ char buf[4096];
+
+ FILE* status = fopen("/proc/self/status", "r");
+ if (status == NULL)
+ {
+ perror("fopen status");
+ exit(1);
+ }
+
+ FILE* output = fopen("status", "a");
+ if (output == NULL)
+ {
+ perror("fopen output file");
+ exit(1);
+ }
+
+ while (!feof(status))
+ {
+ fgets(&buf, 4096, status);
+ fprintf(output, "%s", buf);
+ }
+ fclose(status);
+}
+
+static void __attribute__((constructor)) init()
+{
+ atexit(print_status);
+}
+