在Linux系统中,dev是英文device的缩写,直译过来就是设备的意思。它通常指代根目录下的/dev目录,里面存放着系统中所有硬件设备对应的特殊文件。Linux遵循一切皆文件的设计哲学,因此无论是真实的物理硬件,还是虚拟的逻辑设备,都会以文件节点的形式出现在/dev中,供用户和程序访问。

dev目录的作用
Linux内核在启动时或设备接入时,会在/dev下创建对应的设备文件。应用程序不需要直接跟硬件打交道,只需要打开、读取或写入这些设备文件即可。例如,向/dev/sda写入数据就是在向第一块硬盘写入,从/dev/zero读取则会得到无限的空字符。
设备文件的分类
设备文件主要分为块设备和字符设备两类,它们的区别如下:
| 类型 | 特点 | 常见例子 |
|---|---|---|
| 块设备 | 以数据块为单位读写,可随机访问 | /dev/sda, /dev/vda |
| 字符设备 | 以字符流方式顺序读写 | /dev/tty, /dev/null |
常见的dev中的文件
- /dev/null:黑洞设备,写入的数据会被丢弃
- /dev/zero:提供无限的零字节数据
- /dev/random:提供随机数据
- /dev/sda:第一块SCSI或SATA硬盘
- /dev/tty:当前终端对应的设备文件
如何查看设备文件信息
我们可以使用ls命令配合-l参数查看/dev目录中文件的类型,开头为b的是块设备,开头为c的是字符设备。
# 查看/dev下部分设备文件信息 ls -l /dev/sda /dev/null /dev/zero # 输出示例: # brw-rw---- 1 root disk 8, 0 设备文件 /dev/sda # crw-rw-rw- 1 root root 1, 3 字符设备 /dev/null # crw-rw-rw- 1 root root 1, 5 字符设备 /dev/zero
使用mknod创建设备文件
在特殊情况下,我们可以手动用mknod命令创建字符或块设备文件,语法中需要指定类型、主设备号和次设备号。
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
int main() {
// 创建一个主设备号240、次设备号0的字符设备文件mydev
if (mknod("/dev/mydev", S_IFCHR | 0666, makedev(240, 0)) < 0) {
perror("mknod failed");
return 1;
}
printf("设备文件创建成功n");
return 0;
}
总结
dev在linux中代表设备目录,是系统连接硬件与软件的桥梁。理解/dev中设备文件的含义和分类,能帮助我们更清楚地认识Linux的运作方式,也为后续学习磁盘挂载、设备调试等打下基础。