插件窝 干货文章 linux字符设备放在哪

linux字符设备放在哪

设备 字符 dev 文件 516    来源:    2025-04-30

在 Linux 系统中,字符设备(Character Devices)主要存放在以下两个位置:


1. 设备文件存放目录:/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(物理内存访问)

2. 设备号注册信息:/proc/devices

  • 路径/proc/devices
  • 说明
    • 该文件列出了系统中已注册的字符设备和块设备的主设备号(Major Number)及名称。
    • 通过 cat /proc/devices 可以查看当前内核加载的字符设备驱动: bash Character devices: 1 mem 4 /dev/vc/0 5 /dev/tty ...
    • 字段含义
      • 第一列:主设备号(Major Number)。
      • 第二列:设备名称或驱动标识。

补充说明:

  1. 动态创建设备文件

    • 使用 mknod 命令手动创建设备文件(需指定主/次设备号和类型): bash sudo mknod /dev/my_char_device c 250 0 # 创建一个主设备号为250的字符设备
    • 现代系统通常通过 udev(或 devtmpfs)自动管理 /dev 下的设备文件。
  2. 驱动开发视角

    • 字符设备驱动在内核中通过 register_chrdev()cdev 接口注册,成功后会在 /proc/devices 中显示。
    • 用户空间通过 /dev 下的文件与驱动交互(如 open()read()write())。
  3. 区分字符设备与块设备

    • 字符设备:按字节流访问,无缓冲(如键盘、串口)。
    • 块设备:按块访问,有缓存(如磁盘)。

示例:查找字符设备

# 查看所有字符设备文件
ls -l /dev | grep '^c'

# 查看已注册的字符设备驱动
cat /proc/devices | grep -A 100 "Character devices"

如果需要进一步分析某个具体设备或驱动,可以提供更多上下文信息(如设备名称或用途)。