如果我想在 Linux 中实现一些功能(例如打开、复制、压缩、删除、等待事件),是在 C++ 中实现它并将二进制文件作为进程运行还是在 shell 脚本中实现它更好?
假设我忽略了实现的细节,我想现在,在二进制作为进程启动期间,与启动 shell 脚本相比,将消耗多少内存和 cpu 负载?
我有一个针对 fat32 格式的 U 盘的 udev 规则。该规则包含以下属性:
SUBSYSTEM=="block", KERNEL=="sd?1", ...
通常,它对我迄今为止测试过的 USB 记忆棒非常有效,因为大多数 USB 记忆棒在设备节点中表示为/dev/sda1
或/dev/sdb1
。
现在,我有一个特殊的 USB,它的设备节点为/dev/sda
. 这个 U 盘的blkid
命令会返回这样的输出:
/dev/sda: UUID="AC9E-6C58" TYPE="vfat"
与普通的(/dev/sda1
)相比,我错过了该PARTUUID
属性。
此外,该命令sfdisk -l /dev/sda
返回以下输出:
Disk /dev/sda: 1021 cylinders, 247 heads, 62 sectors/track
Units: cylinders of 7840768 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End #cyls #blocks Id System
/dev/sda1 0 - 0 0 0 Empty
/dev/sda2 0 - 0 0 0 Empty
/dev/sda3 0 - 0 0 0 Empty
/dev/sda4 0 - 0 0 0 Empty
此 USB/dev/sda1
行中有 0。但是,普通的 U 盘有这样的条目:
Device Boot Start End #cyls #blocks Id System
/dev/sda1 0+ 2703- 2704- 7835620 b W95 FAT32
start: (c,h,s) expected (0,1,11) found (0,0,57)
end: (c,h,s) expected (1023,125,46) found (975,125,46)
/dev/sda2 0 - 0 0 0 Empty
/dev/sda3 0 - 0 0 0 Empty
/dev/sda4 0 - 0 0 0 Empty
根据这个讨论,这意味着 U 盘没有分区表。
如果我不想更改我的 udev 规则,我该如何修改这个 U 盘?使用 Windows 工具或 Gparted 进行的正常重新分区不会更改此布局。
如果无法更改分区布局,我该如何更改我的 udev 规则,以便它可以处理在 /dev/sda 或 /dev/sda1 上识别的 USB 记忆棒?
谢谢。
更新:我用“设备节点”更改了术语“安装”以避免混淆。感谢奥斯汀。