如何以编程方式确定文件是不是位于 Linux 和/或 macOS 的网络文件系统(NFS 或 SMB)上?
Posted
技术标签:
【中文标题】如何以编程方式确定文件是不是位于 Linux 和/或 macOS 的网络文件系统(NFS 或 SMB)上?【英文标题】:How can I determine, programatically, if a file is located on a network file system (NFS or SMB) in Linux and/or macOS?如何以编程方式确定文件是否位于 Linux 和/或 macOS 的网络文件系统(NFS 或 SMB)上? 【发布时间】:2020-04-24 10:58:03 【问题描述】:我正在编写一个 I/O 测试实用程序,作为其中的一部分,我希望能够确定特定文件是在本地文件系统上还是在 NFS 或 SMB 等网络文件系统上。是否有任何操作系统调用或其他技术可以提供此信息?我一直在寻找,但到目前为止我还没有找到任何东西。
【问题讨论】:
没有便携的方法可以做到这一点。在 Linux 上,您调用statfs(2)
并检查 f_type
。
【参考方案1】:
所以是的,statfs()(也许还有 stavfs())似乎是要走的路。事实证明,在 macOS 上 statfs() 比 Linux 上的 statfs() 或 statvfs() 更有用。幸运的是 macOS 对我来说更重要。 f_type 字段(两个平台)和 f_fstypename、f_mntonname 和 f_mntfromname 字段(仅限 macOS)是您需要的。
【讨论】:
以上是关于如何以编程方式确定文件是不是位于 Linux 和/或 macOS 的网络文件系统(NFS 或 SMB)上?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法以编程方式确定字体文件是不是具有特定的 Unicode 字形?
asp.net 成员资格 - 如何以编程方式确定用户是不是在角色中