c-字符文件和块文件之间的区别



我正在学习Linux内核的驱动程序编程。我发现有两种类型的设备文件,字符文件和块文件。

目前,我真的不想知道设备文件到底是关于什么的,但我想知道C语言中是否存在字符(非缓冲)块(缓冲)文件的抽象概念(我的意思是,这是一个相对于操作系统还是C语言的概念);

了解是否存在字符的抽象概念(非缓冲)以及C语言中的块(缓冲)文件(我的意思是,如果这是一个概念相对于操作系统或C语言);

它是相对于操作系统的。

获取一些示例代码以显示它们之间的差异C语言(与设备文件无关)。

你看不出有什么不同。我的意思是,字符设备或块设备没有特殊的C功能。当然,代码会有所不同,但只有逻辑,而不是语言。

如果你需要更多信息,这个教程非常棒。

在C中没有字符文件的概念。您有流,可以一个字节接一个字节地读取,但这与底层硬件无关。并且C库可能缓冲它,也可能不缓冲它

另一方面,在驱动程序级别上,字符设备是一种只能提供一个值的设备(串行端口就是这样的例子),而块设备可以提供定义的缓冲区(如硬盘、CD驱动器等)

最新更新