gpt4 book ai didi

linux - 以编程方式检测SD卡写保护

转载 作者:太空狗 更新时间:2023-10-29 12:21:05 24 4
gpt4 key购买 nike

回到软盘的美好时代,如果您启用软盘的写保护,DOS 会友好地告诉您不能写入。现在我们有了可以容纳数千张软盘内容的 SD 卡,而且我们仍然有写保护功能——有时它很方便。但是没有人能告诉我我不能写入它,至少在 Linux 上是这样。我有一个可爱的脚本,可以按照我喜欢的方式对 SD 卡进行分区和格式化。调试了1/2小时才发现SD卡写保护了。

那么问题来了,软件有没有办法检测到这种情况?

谢谢,

最佳答案

驱动程序知道卡何时被写保护,并在您通过命令行挂载它时实际发出警告:

# mount /dev/sdc1 /media/flash
mount: block device /dev/sdc1 is write-protected, mounting read-only

如果您想在设备级别自行检查,可以使用 hdparm command查询磁盘设备的只读状态,一般包括SD卡和U盘。该程序应该在大多数 GNU/Linux 发行版中可用,通常位于名为“hdparm”的包中。

如果您不是 root,请务必指定 hdparm 命令的完整路径;当然,这假设您对您的卡片有读取权限。

例如:我的SD卡已插入,检测为/dev/sdc,写保护标签处于Unlock:

$ /sbin/hdparm -r /dev/sdc

/dev/sdc:
readonly = 0 (off)

当我将写保护标签滑动到锁定时,重新插入卡,并再次运行命令:

$ /sbin/hdparm -r /dev/sdc

/dev/sdc:
readonly = 1 (on)

如果您想在 shell 脚本中执行此操作,您可以尝试类似的操作:

READONLY=`/sbin/hdparm -r /dev/sdc 2>&1 | sed -n 's/^.*= *\([01]\) .*$/\1/p'`
if [ "$READONLY" = "0" ]
then
echo Card is writable.
else
echo Card is not writable.
fi

注意:如果你更喜欢用 C 来做,你可以试试:

  • 以写入模式打开设备文件并查看它是否失败并返回 errnoEROFS(只读文件系统),或者。 ..
  • 以读取模式打开设备文件,然后发出名为BLKROGETioctl() ,并检查结果值是否非零;这就是 hdparm 的工作方式。

关于linux - 以编程方式检测SD卡写保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8332711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com