diff --git a/plugins/system/multicpu1sec/multicpu1sec-c.c b/plugins/system/multicpu1sec/multicpu1sec-c.c index 5c99d831..95718d33 100644 --- a/plugins/system/multicpu1sec/multicpu1sec-c.c +++ b/plugins/system/multicpu1sec/multicpu1sec-c.c @@ -7,6 +7,8 @@ #include +#include + #define PROC_STAT "/proc/stat" int fail(char* msg) { @@ -98,8 +100,9 @@ int acquire() { fgets(buffer, 1024, f); /* open the spoolfile */ - FILE* cache_file = fopen(cache_filename, "a"); + /* lock */ + flock(fileno(cache_file), LOCK_EX); while (! feof(f)) { if (fgets(buffer, 1024, f) == 0) { @@ -128,6 +131,9 @@ int fetch() { printf("fetch()\n"); FILE* cache_file = fopen(cache_filename, "r+"); + /* lock */ + flock(fileno(cache_file), LOCK_EX); + /* cat the cache_file to stdout */ char buffer[1024]; while (fgets(buffer, 1024, cache_file)) {