POSIX statvfs()说明:
可以在f_flag成员中返回以下标志:
- ST_RDONLY - 只读文件系统。
- ST_NOSUID - exec忽略的Setuid / setgid位。
未指定statvfs结构的所有成员是否在所有文件系统上都有有意义的值。
<sys/statvfs.h>
标头应为f_flag成员定义以下符号常量:
- ST_RDONLY - 只读文件系统。
- ST_NOSUID - 不支持ST_ISUID和ST_ISGID文件模式位的语义。
如何正确理解?我的意思是:
ST_RDONLY
是有意义的?是否已知任何操作系统为用于存储数据/可执行文件的文件系统返回不正确的ST_RDONLY
或ST_NOSUID
,同时声称其statvfs()
实现的POSIX兼容性?
答案 0 :(得分:1)
除了存在之外,POSIX规范只需要statvfs()
。
特别是,它要求statvfs()
用“有关文件系统的信息”填充指定的struct statvfs *
缓冲区,但不保证该信息的含义。换句话说,它可能是完全垃圾,实际上是在许多系统上(包括OS X上的HFS +)。
包括 f_flag
struct statvfs
ST_RDONLY
成员,可被屏蔽为ST_NOSUID
和/或{{1}但许多文件系统并不存在(即使它应该是)。
如果您需要跨多个平台可靠地获取文件系统信息,您可能(具有讽刺意味)不得不求助于statfs()
这样的非标准化函数。但是,在Linux上,statvfs()
在大多数非合成文件系统上表现得相当不错。