我正在研究Linux内核的驱动程序编程。我发现有两种类型的设备文件,字符文件和块文件。
目前,我真的不想知道设备文件到底是什么,但我想知道是否存在字符(非缓冲)的抽象概念, C语言中的阻止(缓冲)文件(我的意思是它是相对于操作系统或C语言的概念);
答案 0 :(得分:1)
知道是否存在抽象的角色概念(非缓冲) 和C语言中的块(缓冲)文件(我的意思是它是一个概念 相对于操作系统或C语言);
它与操作系统相关是。
获取一些示例代码以显示它们之间的差异 语言C(独立于它与设备文件有关)。
你会发现没有区别。我的意思是字符设备或块1没有特殊C功能。当然,代码将是不同的,但只是逻辑,而不是语言。
如果您需要更多信息,This tutorial非常棒。
答案 1 :(得分:1)
在C中没有字符文件的概念。你有流,你可以一个接一个地读取,但这与底层硬件无关。并且C库可能会也可能不会缓冲它。
另一方面,在驱动程序级别,字符设备是一种能够仅提供ony值的设备(串行端口就是这样的例子),而不是块设备,它可以提供定义的缓冲区(如硬盘,CD驱动器等)。