【发布时间】:2012-05-29 07:22:10
【问题描述】:
我想检查android是否支持系统调用,statfs()。 所以,我做了下面的代码来检查它(它是通过ndk编译的):
#include <sys/vfs.h>
#include <stdio.h>
int main()
{
struct statfs diskInfo;
statfs("/data",&diskInfo);
perror("statfs,/data");
unsigned long long blocksize = diskInfo.f_bsize;
unsigned long long totalsize = blocksize * diskInfo.f_blocks;
printf("new TOTAL_SIZE == %lu MB/n",totalsize>>20);
unsigned long long freeDisk = diskInfo.f_bfree*blocksize;
printf("DISK_FREE == %ld MB/n",freeDisk>>20);
return 0;
}
并且编译时没有报错,但是通过adb在android模拟器中运行时,提示如下:
kaiwii@ubuntu:~$ adb shell /data/pwrite/test2
statfs,/data: No such file or directory
new TOTAL_SIZE == 0 MB/nDISK_FREE == 0 MB/n
有什么想法吗?谢谢
【问题讨论】:
-
你知道Android提供了Java wrapper for StatFS吗?如果这不符合您的需求,您可能想查看它的实现,尽管它可能只是根据描述包装对 Unix 命令的调用。
-
是的。但是,我需要使用系统调用本身。
-
嗯,你确定你的模拟器上有文件或目录/data?如果您尝试仅使用“/”会发生什么?
-
当然可以。我也尝试了“/”,但它也失败了
标签: android linux android-ndk linux-kernel