diff --git a/slock.c b/slock.c
index 06bd4ad..39f8282 100644
--- a/slock.c
+++ b/slock.c
@@ -44,6 +44,21 @@ die(const char *errstr, ...) {
 	exit(EXIT_FAILURE);
 }
 
+#ifdef __linux__
+#include <fcntl.h>
+
+static void
+dontkillme(void) {
+	int fd;
+
+	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)
+		die("cannot disable the out-of-memory killer for this process\n");
+}
+#endif
+
 #ifndef HAVE_BSD_AUTH
 static const char *
 getpw(void) { /* only run as root */
@@ -244,6 +259,10 @@ main(int argc, char **argv) {
 	else if(argc != 1)
 		usage();
 
+#ifdef __linux__
+	dontkillme();
+#endif
+
 	if(!getpwuid(getuid()))
 		die("slock: no passwd entry for you\n");
 
