典型的 Unix/Linux 程序接受命令行输入作为参数计数 ( int argc
) 和参数向量 ( char *argv[]
)。的第一个元素argv
是程序名称 - 后跟实际参数。
为什么程序名称作为参数传递给可执行文件?是否有使用自己名称的程序示例(可能是某种exec
情况)?
我正在阅读理解安装概念的麻烦并遇到了这个解释:
通过使用
mount -t iso9660 /dev/cdrom /media/cdrom
,您告诉系统:“将您在 中的这个非常长的字节串,/dev/cdrom
按照iso9660
格式解释为目录树,并允许我在该位置下访问它/media/cdrom
”
以及沿着这条线的其他答案。这是有道理的,从这个逻辑中,我了解到挂载本质上是将文件系统耦合到设备,该设备以内核可以将其放入现有文件系统层次结构中的方式解释设备的内容。
如果确实如此,为什么需要循环安装?
由于 amount -o loop
在技术上与该操作mount
的目的相同:读取文件并在文件系统的上下文中解释其内容,为什么我们不能在不创建特殊设备的情况下概括挂载操作?
编辑:我知道循环设备为文件提供了块设备 API。然而,我的问题更笼统。从普通文件(iso
或类似的磁盘映像格式)读取与从特殊文件读取(如果它们包含相同的数据)有何不同?
我关于mount
工作原理的心智模型是这样的:给定由/dev/device
文件公开的一组任意字节,这些字节随后由文件系统驱动程序(ext4
例如)解释,mount
命令将其与根层次结构相关联,以便它对最终用户看起来是透明的.
但是,这组任意字节可以出现在任何地方。如果由文件系统驱动程序解释,它们应该被识别为有效的文件系统。什么限制文件系统驱动程序只能从特殊文件而不是常规文件中读取?