【发布时间】:2016-02-23 20:58:04
【问题描述】:
下午好,
我正在运行一个简单的循环来检查 SD 卡是否已插入或移除,但它似乎并不总是正常工作。
问题是,当程序插入 SD 卡启动时,if(f.good()) 语句为 True。
当 SD 卡被移除时,此声明为 False。
但是,当重新插入 SD 卡时,这个说法仍然是False。
在 C++ 中有没有更可靠的方法来检测 SD 卡的存在? 我正在运行基于 OpenEmbedded 的 Linux Yocto。 我宁愿避免使用任何外部库,并尽可能使用文件 IO 或系统调用。
谢谢。
我的循环如下所示,
while (running)
{
ifstream f("/dev/mmcblk1");
if (f.good()) {
f.close();
if (!mounted)
{
system("mount /dev/mmcblk1p1 /mnt/Storage");
mounted = true;
}
sdPresent = true;
}
else {
f.close();
sdPresent = false;
mounted = false;
}
std::this_thread::sleep_for(std::chrono::milliseconds(500));
}
【问题讨论】:
-
我认为当
ifstream变坏时(!好)它不会再变好。尽管ifstream f("/dev/mmcblk1")在循环内,但它只被初始化一次。尝试在循环外声明ifstream f并在开始时执行 f.open("/dev/mmcblk1");` 并在完成所有检查后执行f.close()。
标签: linux c++11 yocto openembedded