如何使用 c 程序获取 linux 中的磁盘使用情况?
How can get disk usage in linux using c program?
我想在 linux 中获取磁盘使用情况,但是当我 运行 上面的代码时,结果是错误的。
#include <stdio.h>
#include <sys/statvfs.h>
int main(int argc, const char *argv[])
{
const unsigned int GB = (1024 * 1024) * 1024;
struct statvfs buffer;
int ret = statvfs("/dev/sda4", &buffer);
if (!ret) {
const double total = (double)(buffer.f_blocks * buffer.f_frsize) / GB;
const double available = (double)(buffer.f_bfree * buffer.f_frsize) / GB;
const double used = total - available;
const double usedPercentage = (double)(used / total) * (double)100;
printf("Total: %f --> %.0f\n", total, total);
printf("Available: %f --> %.0f\n", available, available);
printf("Used: %f --> %.1f\n", used, used);
printf("Used Percentage: %f --> %.0f\n", usedPercentage, usedPercentage);
}
return ret;
}
输出为:
Total: 7.757446 --> 8
Available: 7.757446 --> 8
Used: 0.000000 --> 0.0
Used Percentage: 0.000000 --> 0
I 运行 df 命令在 linux 终端。输出为:
Filesystem 1K-blocks Used Available Use% Mounted on
**/dev/sda4 471705824 13885152 433789596 4% /**
这两个结果互不相同。这是什么原因?
您不能使用设备“/dev/sda4”。您必须使用一个路径,其中设备已安装为“/”或“/home”。如果您使用设备名称,您将获得 "udev" 文件系统的结果。
我想在 linux 中获取磁盘使用情况,但是当我 运行 上面的代码时,结果是错误的。
#include <stdio.h>
#include <sys/statvfs.h>
int main(int argc, const char *argv[])
{
const unsigned int GB = (1024 * 1024) * 1024;
struct statvfs buffer;
int ret = statvfs("/dev/sda4", &buffer);
if (!ret) {
const double total = (double)(buffer.f_blocks * buffer.f_frsize) / GB;
const double available = (double)(buffer.f_bfree * buffer.f_frsize) / GB;
const double used = total - available;
const double usedPercentage = (double)(used / total) * (double)100;
printf("Total: %f --> %.0f\n", total, total);
printf("Available: %f --> %.0f\n", available, available);
printf("Used: %f --> %.1f\n", used, used);
printf("Used Percentage: %f --> %.0f\n", usedPercentage, usedPercentage);
}
return ret;
}
输出为:
Total: 7.757446 --> 8
Available: 7.757446 --> 8
Used: 0.000000 --> 0.0
Used Percentage: 0.000000 --> 0
I 运行 df 命令在 linux 终端。输出为:
Filesystem 1K-blocks Used Available Use% Mounted on
**/dev/sda4 471705824 13885152 433789596 4% /**
这两个结果互不相同。这是什么原因?
您不能使用设备“/dev/sda4”。您必须使用一个路径,其中设备已安装为“/”或“/home”。如果您使用设备名称,您将获得 "udev" 文件系统的结果。