我在使用外部硬盘时遇到一些问题。我担心它开始被损坏或损坏:S。
在我正在使用的应用程序中统计文件系统检索该外部硬盘的信息:
const char *mountPoint = "/media/hdd";
struct statfs s;
statfs(mountPoint, &s);
然而,我有时会在应用程序日志中注意到整个 Linux 系统被阻止(事实上,由于没有在正确的时间注册某些事件)。我自己通过在这些“关键”时刻之一输入“df”命令注意到了这一点。效果是所有分区都正确显示,但 HDD 分区除外,该分区的行会持续几秒钟才出现。
此外,HDD 的格式为NTFS我正在使用NTFS-3G来操作它。
...最后但并非最不重要的一点是我在 dmesg 中检测到以下问题:
klogd: page allocation failure: order:0, mode:0x20
CPU: 0 PID: 1660 Comm: klogd Not tainted 3.12.20-smp #6
Hardware name: PhoenixAward 945GS/945GS, BIOS 6.00 PG 02/03/2015
[...]
Call Trace:
[...]
[<f866806e>] e1000_alloc_rx_buffers+0x18e/0x1e0 [e1000e]
[<c1a30387>] ? napi_gro_receive+0x67/0x90
[<f8666200>] e1000_clean_rx_irq+0x220/0x340 [e1000e]
[<f866cc5b>] e1000e_poll+0x7b/0x2e0 [e1000e]
[...]
我想知道是否有一种非阻塞的方式来获取已安装的设备信息。在本例中,我需要设备的总大小以及可用或已用磁盘空间。
也许这个问题与“df”或访问卷数据并不严格相关,但它与 Linux 操作系统功能更相关,例如内存分配。
任何帮助将不胜感激。提前致谢。
答案1
编写逻辑来提取设备参数并将其分配给线程/进程。从父进程监视工作线程/进程,如果挂起,则在适当的超时后将其杀死。