发布于 2016-10-19 10:09:50
char驱动程序的概念类似于流。在这种情况下,read只返回下一次可用的任何内容。现在可用的通常是其驱动程序的设备定义的一部分。如果设备返回换行符,那么驱动程序也应该返回换行符。请注意,这意味着设备将返回所有平台上的换行符,而不仅仅是Linux。
通常,解释read返回的字节是一个更高级别的抽象问题。在策略和机制方面,char驱动程序可以看作是提供机制,将策略留给更高层次。
发布于 2016-10-19 10:51:35
在经典的Unix中,字符设备和块设备的区别在于,块设备支持搜索,这意味着它们是可寻址的,以固定大小的磁盘块为单位。字符设备不支持搜索,它们只是传递或接受字符流。
在linux中,设备驱动程序被实现为一个结构,包含一些标志和参数,以及函数指针的集合,实现read()/write()/etc的方法。块(磁盘)驱动程序还将实现/etc(),甚至mmap()。
通常,设备驱动程序不会干扰正在传输的实际内容,它们只使用设备所需的(硬件)协议(例如操作内部控制寄存器、检查状态寄存器、.)将字节或块移动到设备或从设备移动。
https://stackoverflow.com/questions/40127249
复制相似问题