如何获得MacOS上的分区的可用空间

问题描述 投票:0回答:1

[试图获得每个分区的可用磁盘空间,我发现许多在线解决方案,不幸的是,它们都无法使用。

问题是:如何以编程方式获取给定分区的可用(免费)空间?

我尝试过的事情:

#include <filesystem>
int main()
{
    std::filesystem::path diskPath("/dev/disk0s1");
    size_t space = std::filesystem::space(diskPath).available;
    std::cout << "Free space for disk01: " << space << std::endl;
}

不幸的是,我收到以下编译错误:

'path' is unavailable: introduced in macOS 10.15'path' has been explicitly marked unavailable here

我知道boost中有一个类似的库,但如果可能,我想避免升压。

(目标10.12 +)

#include <sys/statvfs.h>
int main() 
{
    struct statvfs buf;

    if (!statvfs("/dev/disk0s1", &buf)) 
    {
        size_t space = buf.f_bfree*buf.f_bsize;
        std::cout << "Free space for disk01: " << space << std::endl;
    }
    else 
    {
      std::cerr << "Error here" << std::endl;
    }
}

[不幸的是,这检索了所有分区的0。注意:f_bsize之类的某些值已正确填写,但f_bfree始终为0

c++ macos disk
1个回答
0
投票

来自this std::filesyste::space reference

确定有关文件系统的信息路径名p所在的位置

[[Emphasis mine]

这意味着您提供的路径必须是文件系统本身上的文件或目录。

例如,如果将std::filesyste::space安装为/dev/disk0s1,则需要提供诸如/home之类的路径。

© www.soinside.com 2019 - 2024. All rights reserved.