【问题标题】:O_PATH equivalent in Linux kernel before 2.6.39?2.6.39 之前的 Linux 内核中的 O_PATH 等效项?
【发布时间】:2019-10-21 08:01:17
【问题描述】:

在最新的内核中,我使用以下代码来操作符号链接文件的 inode:

file = filp_open(filename, O_PATH | O_NOFOLLOW, 0);

如果我不添加 O_PATH,filp_open 将失败并显示 -ELOOP

在 Linux 内核 2.6.32 上,O_PATH 不可用,我应该改用什么?

【问题讨论】:

    标签: linux kernel symlink fs


    【解决方案1】:

    我认为没有直接的等价物,因为O_PATH 具有非常具体的语义,文件本身没有打开。我认为最接近的方法是以安全的方式实际打开文件,即使用O_RDONLY。是的,这在语义和物理上并不完全相同。当一个文件被实际打开时,内核中会执行更多的工作,而使用O_PATH 时不会执行这些工作。此外,您需要对文件具有读取权限才能打开它。但除此之外,它应该允许你做你需要的。

    【讨论】:

      猜你喜欢
      • 2020-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多