插件窝 干货文章 linux字符设备有哪些

linux字符设备有哪些

设备 dev 字符 终端 252    来源:    2025-05-03

在 Linux 系统中,字符设备(Character Devices)是一种按字节流顺序访问的设备,通常用于数据传输量较小或需要逐字节处理的场景。以下是常见的字符设备分类及示例:


1. 终端设备(TTY)

  • 虚拟终端(Virtual Console)
    /dev/ttyN(如 /dev/tty1~/dev/tty6):本地文本终端,通过 Ctrl+Alt+F1~F6 切换。
  • 伪终端(Pseudo-Terminal, PTY)
    /dev/pts/N(如 /dev/pts/0):用于远程登录(SSH)或图形终端模拟器(如 GNOME Terminal)。
  • 串口终端(Serial Port)
    /dev/ttyS*(如 /dev/ttyS0):物理串口设备(如 RS-232)。

2. 输入设备

  • 键盘
    /dev/input/event*:通用输入事件接口(如键盘、鼠标)。
    /dev/input/by-path/*:按物理路径链接的输入设备。
  • 鼠标
    /dev/input/mice:传统鼠标设备(PS/2 或 USB)。

3. 系统控制设备

  • 空设备(Null Device)
    /dev/null:丢弃所有写入的数据,读取时返回 EOF。
  • 随机数生成器
    /dev/random/dev/urandom:内核提供的随机数源。
  • 零设备(Zero Device)
    /dev/zero:读取时返回无限的空字节(\0)。

4. 声音设备

  • 音频接口
    /dev/snd/*:ALSA 音频子系统设备(如 /dev/snd/pcmC0D0p 为第一个声卡的播放设备)。

5. 打印机设备

  • 并行端口打印机
    /dev/lp0/dev/lp1:传统并行端口打印机(LPT)。

6. 特殊用途设备

  • 内存设备
    /dev/mem:直接访问物理内存(需 root 权限)。
    /dev/kmem:访问内核虚拟内存(已逐渐被废弃)。
  • 帧缓冲(Framebuffer)
    /dev/fb*(如 /dev/fb0):图形显示缓冲区的直接访问。

7. 其他常见设备

  • 磁带驱动器
    /dev/st*(SCSI 磁带机)。
  • 热插拔设备
    /dev/hidraw*:原始 HID 设备(如 USB 键盘/鼠标)。
  • GPIO 和硬件接口
    /dev/gpio*:通用输入输出接口(部分系统通过 sysfs 替代)。

如何查看字符设备?

  1. 使用 ls 命令
    字符设备文件在 ls -l 输出中以 c 标识:

    ls -l /dev/tty1
    # 输出示例:crw--w---- 1 root tty 4, 1 Jun 10 10:00 /dev/tty1
    # "c" 表示字符设备,"4, 1" 为主/次设备号。
    
  2. 通过设备号筛选

    ls -l /dev | grep '^c'
    
  3. 查看内核已注册设备

    cat /proc/devices | grep -A 100 "Character devices"
    

字符设备 vs 块设备

  • 字符设备:按字节流访问,无缓存(如键盘、串口)。
  • 块设备:按固定块大小访问,支持缓存(如硬盘、SSD)。

实际应用场景

  • 调试串口:通过 /dev/ttyS0 与嵌入式设备通信。
  • 日志重定向:将程序输出丢弃到 /dev/null
  • 安全随机数:从 /dev/random 读取高熵随机数。

如果有特定设备的使用问题或驱动开发需求,可以进一步探讨!