linux基础
理解:linux中一切设备皆是文件
- 比如,标准输入和标准输出就是文件,由于输入输出绑定物理对象(如键盘)的不同,它们是链接文件。
/dev/stdin是软链接文件,目的是通过 “动态指向” 适配不同场景的实际输入设备(终端、文件、管道等),让应用程序无需修改代码即可灵活读写。
设备对应文件
Linux 将所有硬件设备(如键盘、硬盘、网卡、打印机等)都对应到/dev目录下的一个 “设备文件”。例如:
- 键盘对应
/dev/input/event0(字符设备); - 硬盘对应
/dev/sda(块设备); - 网卡没有直接的设备文件,但通过网络接口(如
eth0)抽象。
这些设备文件不是 “存储数据的文件”,而是内核与硬件交互的 “接口”。
设备操作通过 “文件 API” 统一实现
在 Linux 中,操作设备和操作普通文件使用完全相同的函数(如open()、read()、write()、close())。例如:
- 读键盘输入,相当于
open("/dev/input/event0")后read(); - 写数据到硬盘,相当于
open("/dev/sda")后write()。
这种统一接口让程序员无需关心硬件细节(比如键盘和硬盘的物理原理不同),只需掌握文件操作逻辑即可控制设备,极大简化了编程。
设备文件通过 “主 / 次设备号” 标识硬件
设备文件本身不存储数据,而是通过 “主设备号” 和 “次设备号” 关联到内核中的设备驱动:
- 主设备号:标识设备类型(如硬盘的主设备号是 8,终端是 4);
- 次设备号:标识同类型中的具体设备(如
/dev/sda1的次设备号是 1,/dev/sda2是 2)。
内核通过主设备号找到对应的驱动程序,再通过次设备号定位具体设备,完成硬件交互。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Dedsec的博客!



