GNU/Linux >> Linux の 問題 >  >> Linux

Linux でディレクトリの空きディスク領域をプログラムで取得する方法

C++17 の場合

std::filesystem::space を使用できます :

#include <iostream>  // only needed for screen output

#include <filesystem>
namespace fs = std::filesystem;

int main()
{
    fs::space_info tmp = fs::space("/tmp");

    std::cout << "Free space: " << tmp.free << '\n'
              << "Available space: " << tmp.available << '\n';
}

boost::filesystem:を使用できます:

struct space_info  // returned by space function
{
    uintmax_t capacity;
    uintmax_t free; 
    uintmax_t available; // free space available to a non-privileged process
};

space_info   space(const path& p);
space_info   space(const path& p, system::error_code& ec);

例:

#include <boost/filesystem.hpp>
using namespace boost::filesystem;
space_info si = space(".");
cout << si.available << endl;

戻り値:space_info 型のオブジェクト。 space_info オブジェクトの値は、POSIX statvfs() を使用して POSIX struct statvfs を取得し、その f_blocks、f_bfree、および f_bavail メンバーを f_frsize メンバーで乗算し、その結果を capacity、free、およびそれぞれ利用可能なメンバー。値を決定できないメンバーは、-1 に設定されます。


man statvfs(2) をチェック

「空き容量」は f_bsize * f_bfree として計算できると思います .

NAME
       statvfs, fstatvfs - get file system statistics

SYNOPSIS
       #include <sys/statvfs.h>

       int statvfs(const char *path, struct statvfs *buf);
       int fstatvfs(int fd, struct statvfs *buf);

DESCRIPTION
       The function statvfs() returns information about a mounted file system.
       path is the pathname of any file within the mounted file  system.   buf
       is a pointer to a statvfs structure defined approximately as follows:

           struct statvfs {
               unsigned long  f_bsize;    /* file system block size */
               unsigned long  f_frsize;   /* fragment size */
               fsblkcnt_t     f_blocks;   /* size of fs in f_frsize units */
               fsblkcnt_t     f_bfree;    /* # free blocks */
               fsblkcnt_t     f_bavail;   /* # free blocks for unprivileged users */
               fsfilcnt_t     f_files;    /* # inodes */
               fsfilcnt_t     f_ffree;    /* # free inodes */
               fsfilcnt_t     f_favail;   /* # free inodes for unprivileged users */
               unsigned long  f_fsid;     /* file system ID */
               unsigned long  f_flag;     /* mount flags */
               unsigned long  f_namemax;  /* maximum filename length */
           };

Linux
  1. Linuxでdfを使用して空きディスク容量を確認します

  2. Linux –前日にSarを表示するにはどうすればよいですか?

  3. Linux でアドレス空間の領域の CPU キャッシュをフラッシュする方法は?

  1. Red Hat Enterprise Linuxを無料で入手するにはどうすればよいですか?

  2. Linux で空きディスク領域を消去するには?

  3. Linux で物理ディスクの数を取得するには?

  1. ncduを使用してLinuxの空きディスク容量を確認する

  2. Linuxでディレクトリサイズを取得する方法

  3. Linux カーネルをコンパイルするには、どのくらいのサイズが必要ですか?