- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如果我提出一个“双重问题”,我很抱歉,但我不想将这两个问题分开 :) 有没有人知道 TMPFS_MAGIC
的值是 0x01021994
用于什么?它在 /usr/include/linux/magic.h
中定义,我在运行以下代码时发现了它,该代码试图确定 linux 目录(通常是分区)中的可用空间:
QString path = "/dev/sde1";
struct stat stst;
struct statfs stfs;
if ( ::stat(path.toLocal8Bit(), &stst) == -1 )
{
return 0.0;
}
if ( ::statfs(path.toLocal8Bit(), &stfs) == -1 )
{
return 0.0;
}
return m_diskFree = stfs.f_bavail * ( stst.st_blksize / 1024 );
从 gdb 命令提示符:
(gdb) print stfs
$1 = {f_type = 16914836, f_bsize = 4096, f_blocks = 2042909, f_bfree = 2042907, f_bavail = 2042907, f_files = 2042909, f_ffree = 2042267, f_fsid = {__val = {0, 0}}, f_namelen = 255, f_frsize = 4096, f_flags = 4128, f_spare = {0,
0, 0, 0}}
f_type = 16914836
是上面的魔法。供您引用,“/dev/sde1”是一个外部驱动器,上面有一个 NTFS 分区。
而且上面的代码对于安装在 linux 系统上的 NTFS 分区不能正常工作(它适用于 ext*fs 文件系统),所以我想问:你知道正确找到安装在 Linux 上的 NTFS 驱动器的可用空间吗主机? linux 命令 df
似乎可以正确完成这项工作,但我没有设法找到正确的方法(还......)。
谢谢,f。
最佳答案
因此,经过一些调试和不眠之夜,解决方案非常简单。找到 df.c 的源代码并阅读它。免费开源代码万岁。
以及解释:当您使用 stat 和 statfs 查找硬盘上的可用空间时,您不会尝试查找设备本身的可用空间,因为那很神奇……但是,您尝试查找安装设备的目录的可用空间。所以,而不是
QString path = "/dev/sde1";
应该有
QString path = "/mnt/DISK";
其中 "mnt/DISK"
是安装磁盘 "/dev/sde1"
的目录。我已经使用 libext2fs
找到磁盘的挂载点,但我确信还有其他更好的解决方案可以找到它,例如解析 /etc/mtab
/p>
关于c - Linux header 中的 TMPFS_MAGIC 和确定可用磁盘空间的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14975558/
如果我提出一个“双重问题”,我很抱歉,但我不想将这两个问题分开 :) 有没有人知道 TMPFS_MAGIC 的值是 0x01021994 用于什么?它在 /usr/include/linux/magi
我是一名优秀的程序员,十分优秀!