我有一个带有SD读卡器的debian linux盒。当SD卡不存在的时候,我似乎可以做文件IO (一点)。我需要一种方法来确保我正在读取的文件实际上是卡上的文件,而不是缓存中的文件。
详细信息:如果我把一个文件放在SD卡上并读取它:
#!/bin/bash
if [-e "/media/usb3/disk_id"]
id=`cat /media/usb3/disk_id`
logger "disk id: $id"
else
logger "not there"
fi如果我在磁盘上插入一个带有'disk_id‘文件的磁盘,这是可行的(IE预期的行为)。但如果我移除SD卡它还能继续工作..。或者把另一张没有文件的卡片放进去。
我可以使用blkid -d /dev/null检测SD卡的存在/缺位,但我不知道如何绕过操作系统正在进行的缓存。
有什么建议吗?
发布于 2013-06-30 05:49:25
如果您删除一个设备而没有正确地卸载它,您将观察到此行为。你真的无能为力。至少没什么简单的。
您可以尝试通过向块设备写入一些东西(可能创建一个新文件),然后调用fsync来检测块设备是否存在。如果块设备不再存在,fsync将失败。
不过,我不知道如何在bash脚本中这样做。
你应该确保你没有弹出你的SD卡,而不首先卸载他们。
https://stackoverflow.com/questions/17372353
复制相似问题