Linux查看硬盘大小,用C/C++程序写。
各位,我有如下代码:
struct statfs diskStatfs;
statfs("/", &diskStatfs);
long iTotalCapacity = diskStatfs.f_blocks * (diskStatfs.f_bsize / (1024 * 1024)); (Mb)
long iFreeCapacity = diskStatfs.f_bfree * (diskStatfs.f_bsize / (1024 * 1024)); (Mb)
我想获得系统的整个硬盘大小以及剩余的硬盘大小,可输出的结果都是0。是不是越界了,如果是该怎么改进?
或者有没有更好的方法。
请高手指教,谢谢。
system("fdisk -l");
使用系统提供的shell命令,呵呵...
楼上能否说的详细点,谢谢。
如果用system("fdisk -l"); 我怎样得到结果?
要么你就用浮点数。
整数除法就是这样,小的除大的,结果就是0。
long iTotalCapacity = diskStatfs.f_blocks * diskStatfs.f_bsize / (double)(1024 * 1024); (Mb)
long iFreeCapacity = diskStatfs.f_bfree * diskStatfs.f_bsize / (double)(1024 * 1024); (Mb)
用你这种方法求,结果不是很准,我这样做过,得出的值与实际容量有很大差距。你可以试试、、、我也没有好的解决方法、、、、期待中、、、
是的,得出的结果第一个只有258M。应该是不准的吧。
用 long long 试试,我怀疑是越界、、、、
哈哈 我说错了
呀,那样的话就溢出了,你可能得用long long。
现在值倒是有了,可我总感觉不太对。硬盘哪会这么小呢,iTotalCapacity = 258M,iFreeCapacity = 80M
我用df
相关问答:
在查询后将查询出来的值赋给各输入框
<c:if test="${not empty dataValue}">
fm.SAMPLING_DATE.value=" <c:out value='${dataValue.SAMPLING_DATE}'/ ......
13个人围成一圈,从第一个人开始顺序报号1,2,3。凡报到3者退出圈子,找出最后留在圈子中的人原来的序号
结果应该是13 可我的程序的结果是11 希望好心人帮改一下
#include <stdio.h>
#include < ......
'\108'作为字符常量对不对?
转义字符'\ddd'表示3位8进制所代表的字符。 但是108不是正确的8进制表示方法,因此应该是错误的。
但是char a='\108'; 为什么编译不出错呢?
\108 没超过 ......
如题,请知道的高手指点一下,THANKS
PHP函数都是用C实现的~
反其道而行之~
HOHO,关键是,自已再去实现这个功能累啊,PHP有现成的就直接调用好了,
顶起,有高手点解一下,或者是我直接将PHP 源码中的 .c ......
功能是实现字符串的翻转,不知道哪里有错误,请指教
#include <iostream>
#include <stdio.h>
using namespace std;
void reverse()
{
char ch;
scanf("%c",ch) ......