大家好:
我最近在看有关LINUX网络方面的书,对一些概念非常乱,不好理解,希望能帮我解惑,非常感谢!
书中说对串行端口的访问是通过/dev下的设备文件完成的,然后又说系统定义了一个抽象的接口,所有对设备访问都是通过接口来实现的,这两句话单独理解都没问题,但是放在一起就乱了,能不能帮忙解释一下?
非常感谢!
1.对串行端口的访问是通过/dev下的设备文件完成的。-->一切皆文件,不管是socket,还是其他设备或是文件,所有操作都统一了,这个你应该已经理解了。
2.所有对设备访问都是通过接口来实现的.-->此处说的接口就是open read write
等函数。内核大牛们写的c都是类似面向对象的。linus之前喷c++的时候就说过,面向对象c语言也可以做。其实这些接口都是指针,在不同类型的设备初始化时,赋了不同的回调。
这两句其实不冲突,也就是有了第二点的处理,才能做到第二点的一切皆文件。
unix一切皆文件,所以全部都用通用的IO接口即可
unix/linux系统把所有设备都抽象成文件了,比如键盘、鼠标、终端、磁盘,当然串口也不例外。这样在访问或使用这些设备的时候不就简单了嘛~
linux上面,大部分东西都可以理解成一个文件。
所以,你接入一个u盘,移动硬盘,or net-socket ,都可以使用read/write函数对其进行读写。