1
我想編譯「slock」來實現一些調整。它無法啓動,在此:EACCESS寫/ proc/self/oom_score_adj
#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
我繼續做了一些調試,發現我從write()
得到EACCESS。
有什麼收穫?我相信這是一些安全特性,因爲如果進程可以改變這個值,它並不酷,但是我做錯了什麼?要設置二進制文件,是否有一些特殊的文件系統標誌來實現這個功能?