gpt4 book ai didi

c++ - 检查是否有足够的磁盘空间来保存文件;保留它

转载 作者:IT王子 更新时间:2023-10-29 01:02:07 33 4
gpt4 key购买 nike

我正在编写一个 C++ 程序,它将打印出大型 (2-4GB) 文件。

在开始编写文件之前,我想确保驱动器上有足够的空间来保存文件。。如果可能的话,我想保留这个空间。

这是在基于 Linux 的系统上进行的。

有什么好的方法可以做到这一点吗?

最佳答案

看看posix_fallocate() :

NAME
posix_fallocate - allocate file space

SYNOPSIS

int posix_fallocate(int fd, off_t offset, off_t len);

DESCRIPTION
The function posix_fallocate() ensures that disk space is allocated for
the file referred to by the descriptor fd for the bytes in the range
starting at offset and continuing for len bytes. After a successful
call to posix_fallocate(), subsequent writes to bytes in the specified
range are guaranteed not to fail because of lack of disk space.

编辑 在评论中,您指出您使用 C++ 流来写入文件。据我所知,没有从 std::fstream 获取文件描述符 (fd) 的标准方法。

考虑到这一点,我会将磁盘空间预分配作为过程中的一个单独步骤。它会:

  1. open()文件;
  2. 使用posix_fallocate() ;
  3. close()文件。

这可以变成一个简短的函数,甚至可以在您打开 fstream 之前调用。

关于c++ - 检查是否有足够的磁盘空间来保存文件;保留它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9488750/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com