diff options
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); +} + |
