我有一个带有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卡的存在/不存在但是我不确定如何绕过操作系统正在进行的缓存。
建议?
答案 0 :(得分:0)
如果在未正确卸载设备的情况下移除设备,则会发现此行为。你真的无能为力。至少没什么简单的。
您可以尝试通过向其写入内容(可能创建新文件)然后调用fsync
来检测块设备是否存在。如果块设备不再存在,则fsync将失败。
我不知道如何在bash脚本中执行此操作。
您应该确保在不卸载SD卡的情况下不要弹出SD卡。