在 Linux 系统中,字符设备(Character Devices)主要存放在以下两个位置:
/dev
/dev/
/dev
目录下。c
(通过 ls -l
查看时,权限位的第一个字符显示为 c
)。bash
crw-rw-rw- 1 root root 1, 3 Jan 1 00:00 /dev/null # null设备(字符设备)
crw------- 1 root root 5, 1 Jan 1 00:00 /dev/console # 控制台(字符设备)
/dev/tty*
(终端设备)/dev/pts/*
(伪终端)/dev/random
、/dev/urandom
(随机数生成器)/dev/mem
(物理内存访问)/proc/devices
/proc/devices
cat /proc/devices
可以查看当前内核加载的字符设备驱动:
bash
Character devices:
1 mem
4 /dev/vc/0
5 /dev/tty
...
动态创建设备文件:
mknod
命令手动创建设备文件(需指定主/次设备号和类型):
bash
sudo mknod /dev/my_char_device c 250 0 # 创建一个主设备号为250的字符设备
udev
(或 devtmpfs
)自动管理 /dev
下的设备文件。驱动开发视角:
register_chrdev()
或 cdev
接口注册,成功后会在 /proc/devices
中显示。/dev
下的文件与驱动交互(如 open()
、read()
、write()
)。区分字符设备与块设备:
# 查看所有字符设备文件
ls -l /dev | grep '^c'
# 查看已注册的字符设备驱动
cat /proc/devices | grep -A 100 "Character devices"
如果需要进一步分析某个具体设备或驱动,可以提供更多上下文信息(如设备名称或用途)。