Linux kernel 为mount()系统调用使用正确的参数/标志

Linux kernel 为mount()系统调用使用正确的参数/标志,linux-kernel,mount,system-calls,strace,Linux Kernel,Mount,System Calls,Strace,我试图了解mount syscall是如何工作的,以及它使用的标志是什么。我的文件系统是ext4,我正在将其重新安装为只读。我在Debian中使用mount命令,并从strace开始 在strace的输出中,我可以看到实际的系统调用: mount("/dev/root", "/", 0x3a74500, MS_MGC_VAL|MS_RDONLY|MS_REMOUNT, NULL) = 0 根据man 2装载,装载系统调用的参数为: int mount(const char *source, c

我试图了解mount syscall是如何工作的,以及它使用的标志是什么。我的文件系统是ext4,我正在将其重新安装为只读。我在Debian中使用mount命令,并从strace开始

在strace的输出中,我可以看到实际的系统调用:

mount("/dev/root", "/", 0x3a74500, MS_MGC_VAL|MS_RDONLY|MS_REMOUNT, NULL) = 0
根据man 2装载,装载系统调用的参数为:

int mount(const char *source, const char *target,
      const char *filesystemtype, unsigned long mountflags,
      const void *data);
我不理解第三个参数0x3a74500,它应该是文件系统类型。我已经预料到,我应该使用ext4


这个十六进制字符串0x3a74500是什么意思?

这可以是指向char*定义的指针,但为了我的理解,它应该向您显示文本。你总是看到同一个地址吗?您可以尝试不同的文件系统类型,看看是否会发生变化吗?Ishay Peled-您是对的,每次的值都不同。