【问题标题】:statvfs unsupported filesystemsstatvfs 不支持的文件系统
【发布时间】:2018-10-31 00:46:04
【问题描述】:

It seems POSIX 2008 允许 statvfs 失败并出现错误 ENOSYS(文件系统不支持此调用)。

不过,此错误已在 latest POSIX 修订版中删除。

我找不到任何文件系统不支持statvfs 的信息。这是我在 Linux 上应该担心的事情吗?

【问题讨论】:

    标签: linux filesystems


    【解决方案1】:

    这取决于您可能需要担心多少旧系统。

    您需要检查对 statvfs() 的调用是否失败 - 还有其他原因可能会失败。因此,ENOSYS 是否是返回的错误之一在很大程度上无关紧要。您可能使用strerror() 或其亲属之一来报告错误。与 ELOOP 相比,ENOSYS 的唯一区别是无法修复 ENOSYS(无需修改内核,因此 ENOSYS 不再是适当的响应),而使用 ELOOP,您可能会找到一种方法来摆脱符号链接循环(但你可能不会费心去尝试)。

    【讨论】:

    • 你说得对,反正我要检查返回值。目前,我试图了解我是否可以轻而易举地失败(警告)或必须艰难地失败(死亡),但这个考虑不是这个问题的主题。仅出于这个原因,我和用户都无法轻松修复 ENOSYS 的情况对我来说很重要。
    • 这取决于您将如何处理您希望从系统调用中获得的信息。我的直觉是,您可能会决定继续进行,好像一切正​​常,可能会警告预期信息不可用 - 或者您可能决定用户指定的任何内容都不合适并给出适当的错误。你可能不太可能在现代 Linux 机器上找到一个无论如何都不支持它的文件系统,所以它可能会担心不太可能的事情(这是一件好事,但只能适度,拖延不是一个好主意太长了)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 2017-01-17
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    相关资源
    最近更新 更多