diff options
| author | Florian Fischer <florian.fl.fischer@fau.de> | 2019-01-15 15:53:45 +0100 |
|---|---|---|
| committer | Florian Fischer <florian.fl.fischer@fau.de> | 2019-01-15 18:29:26 +0100 |
| commit | 259fd2a64bf114907017fe286702218cdf13c8ca (patch) | |
| tree | c018a3e1f7c6dfaab121f23ce25514d91eef4e93 /src/print_status_on_exit.c | |
| parent | f7e5eef592b2a70313bb0fac5f2e3ee42bd9f634 (diff) | |
| download | allocbench-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.c | 37 |
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); +} + |
