使用系统调用 mount() 以只读方式重新挂载 ext4 文件系统
using the syscall mount() to remount ext4 filesystem read-only
我想写一个带有硬编码选项的简单 C 程序,除了将根文件系统重新挂载到 read-only
我明白了,mount() 系统调用采用以下参数:
mount(const char *spec, const char *node, const char *type, int flags, void *data)
我有以下 C 代码:
#include <stdio.h>
#include <errno.h>
#include <sys/mount.h>
int main(int argc, char *argv[]) {
return mount ("/dev/sda1", "/", "ext4", "MS_RDONLY", NULL);
}
我知道,我应该使用类型 int
代替 MS_RDONLY
。但是我在哪里可以找到对应于 MS_RDONLY
的值(或者我需要使用哪个选项)?
MS_RDONLY 应在 mount.h 中定义,您已将其包含在代码中。将 "MS_RDONLY"
更改为 MS_RDONLY
应该可以解决问题。
#define
在 sys/mount.h
。
mount ("/dev/sda1", "/", "ext4", MS_RDONLY, NULL);
我想写一个带有硬编码选项的简单 C 程序,除了将根文件系统重新挂载到 read-only
我明白了,mount() 系统调用采用以下参数:
mount(const char *spec, const char *node, const char *type, int flags, void *data)
我有以下 C 代码:
#include <stdio.h>
#include <errno.h>
#include <sys/mount.h>
int main(int argc, char *argv[]) {
return mount ("/dev/sda1", "/", "ext4", "MS_RDONLY", NULL);
}
我知道,我应该使用类型 int
代替 MS_RDONLY
。但是我在哪里可以找到对应于 MS_RDONLY
的值(或者我需要使用哪个选项)?
MS_RDONLY 应在 mount.h 中定义,您已将其包含在代码中。将 "MS_RDONLY"
更改为 MS_RDONLY
应该可以解决问题。
#define
在 sys/mount.h
。
mount ("/dev/sda1", "/", "ext4", MS_RDONLY, NULL);