【问题标题】:Linux filp_open error number definitionsLinux filp_open 错误号定义
【发布时间】:2017-03-09 21:12:16
【问题描述】:

我对@9​​87654321@ 函数有疑问:

我可以从IS_ERR函数中得到错误号,但是我不明白错误号的含义。

在哪里可以找到filp_open 错误号定义?

【问题讨论】:

  • man errno 可能是你最好的选择。

标签: linux


【解决方案1】:

您不应该使用filp_open 在内核模式下读/写文件。出于(明显的)安全原因。其他原因可以查到in this answer和this answer(摘自this comment)。 official documentation 也建议不要使用flp_open:

如果你真的需要,这是从内核空间打开文件的助手。但一般来说你不应该这样做,所以请继续前进,这里没什么可看的..

错误代码定义

内核在内核空间和用户空间使用相同的错误号(errno)。因此,正如OmnipotentEntity 指出的那样,您可以查看man errno 以了解错误的一般含义。

查看filp_open 的实际实现及其可能的错误源也很有帮助,例如file_open_name 和build_open_flags。

注意IS_ERR 确实不返回错误,而只是返回提供的指针是否为错误值。如果IS_ERR 为真,您必须使用PTR_ERR 从指针中检索错误值。示例:

fptr = filp_open(...)

if (IS_ERR(fptr)) {
    printk("%d\n", PTR_ERR(fptr));
}

【讨论】:

  • 顺便说一句,应该是 PTR_ERR() 而不是 ERR_PTR()。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-29
  • 2012-10-10
相关资源
最近更新 更多