Slightly safer OOM killer disablement in linux - slock - simple X display locke… | |
git clone git://git.suckless.org/slock | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 0edbd2e0164a8c6cbad415e38083469041f29996 | |
parent 754195f8d75586e23d1cc69cad00710802e0cb5d | |
Author: David Phillips <[email protected]> | |
Date: Fri, 19 Jun 2015 23:42:15 +1200 | |
Slightly safer OOM killer disablement in linux | |
Diffstat: | |
M slock.c | 13 ++++++++++++- | |
1 file changed, 12 insertions(+), 1 deletion(-) | |
--- | |
diff --git a/slock.c b/slock.c | |
@@ -60,16 +60,27 @@ die(const char *errstr, ...) | |
#ifdef __linux__ | |
#include <fcntl.h> | |
+#include <linux/oom.h> | |
static void | |
dontkillme(void) | |
{ | |
int fd; | |
+ int length; | |
+ char value[64]; | |
fd = open("/proc/self/oom_score_adj", O_WRONLY); | |
if (fd < 0 && errno == ENOENT) | |
return; | |
- if (fd < 0 || write(fd, "-1000\n", 6) != 6 || close(fd) != 0) | |
+ | |
+ /* convert OOM_SCORE_ADJ_MIN to string for writing */ | |
+ length = snprintf(value, sizeof(value), "%d\n", OOM_SCORE_ADJ_MIN); | |
+ | |
+ /* bail on truncation */ | |
+ if (length >= sizeof(value)) | |
+ die("buffer too small\n"); | |
+ | |
+ if (fd < 0 || write(fd, value, length) != length || close(fd) != 0) | |
die("cannot disable the out-of-memory killer for this process\… | |
} | |
#endif |