C Linux Проверка свободного места в монтировании - PullRequest
1 голос
/ 16 октября 2019

Когда я запускаю df -h, я вижу, что в /dev я использую 6M и размер 40M, а Доступный размер 34M.

Как я могу получить эту информацию с кодом c?

Ответы [ 2 ]

4 голосов
/ 16 октября 2019

С здесь :

Используйте API statvfs:

// header for statvfs
#include <sys/statvfs.h>

, а прототип statvfs -

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

Результаты будут заполнены в buf statvfs struct:

struct statvfs {
    unsigned long  f_bsize;    /* filesystem 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;     /* filesystem ID */
    unsigned long  f_flag;     /* mount flags */
    unsigned long  f_namemax;  /* maximum filename length */
};

Тип возвращаемого значения:

В случае успеха возвращается ноль. В случае ошибки возвращается -1, и значение errno устанавливается соответствующим образом.

Также обратитесь к справочной странице man3 команды statvfs для получения более подробной информации.

1 голос
/ 16 октября 2019

Вы проверили источник df из Coreutils ?

Он использует statvfs() из sys/statvfs.h в Linux, а также в других POSIX-подобныхсистемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...